none
ASP.NET MVC fechar o thickbox e enviar para view de erro. RRS feed

  • Pergunta

  • Olá amigos,

    estou com um problema, tenho uma rotina que abre um thickbox (componente em JQuery que é uma especie de frame). Tenho um método que é disparado dentro desta janela (faz um post), porém em caso de erro, gostaria de fechar o thickbox e enviar o usuário para um página de erro que fiz. Poderiam me ajudar por favor?

    Corpo do meu método.

    [Authorize]
    public ActionResult TestoInfoUsu(string CodUsu)
    {
          if(ValidoCodigo(CodUsu))
          {
              View("InfoPessoal");
          }
          else
          {
              View("Erro");
          }
    }
    Quando executo esse método e dá falha, invés de fechar o thickbox e enviar o usuário para a página de erro, a página de erro é aberta dentro da thickbox.

    Obrigado.

    _________________________________
    Só não erra quem não faz.


    • Editado kaneda183 quarta-feira, 29 de outubro de 2014 17:17
    quarta-feira, 29 de outubro de 2014 17:15

Todas as Respostas

  • Isso acontece porque você está abrindo o próprio HTML que é renderizado na Action dentro do controle Thickbox.

    Não acho que é uma boa prática, mas a única forma que vejo de resolver seu problema é por adicionar um Javascript na sua View de Erro para redirecionar:

    Erro.cshtml

    <script>
    window.location = "Erro.html";
    </script>

    Se sua view Erro.cshtml estiver sendo aberta dentro de um frame, pode usar:

    <script>
    parent.location = "Erro.html";
    </script>
    
    Marque como resposta se foi útil!

    quinta-feira, 30 de outubro de 2014 03:20
  • Então agora minha dificuldade é, como faço para executar/chamar um método javascript através do controller?

    Obrigado!

    quinta-feira, 30 de outubro de 2014 16:42
  • Seu problema original, foi solucionado?

    Acho que está misturando o conceito. O controller é o lado server, logo não é possível executar javascript neste contexto. O que de fato precisa?

    Se sua pergunta original foi respondida, por favor, marque a resposta.

    quinta-feira, 30 de outubro de 2014 17:07
  • Na verdade não, pois eu tentei sua solução e continuou abrindo dentro do ThickBox a página de erro, então imaginei se desse para chamar do servidor ou enviar do servidor um script chamando o close da thickbox e depois redirecionar para a página de erro, resolveria.

    Abs


    kaneda182

    segunda-feira, 3 de novembro de 2014 12:06
  • Na verdade não, pois eu tentei sua solução e continuou abrindo dentro do ThickBox a página de erro, então imaginei se desse para chamar do servidor ou enviar do servidor um script chamando o close da thickbox e depois redirecionar para a página de erro, resolveria.

    Abs


    kaneda182

    Se sua view Erro.cshtml estiver sendo aberta dentro de um frame, pode usar:

    <script>
    parent.location = "Erro.html";
    </script>

    Você viu se está sendo aberta dentro de um inframe como citei acima?

    segunda-feira, 3 de novembro de 2014 12:08