none
Como usar o JavaScriptResult no MVC4 RRS feed

  • Pergunta

  • Bom dia Senhores , Tenho o seguinte código :

      public class ChecarSessao : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
    
    
                HttpContext Contexto = HttpContext.Current;
    
                if (Contexto.Session != null)
                {
    
                    if (Contexto.Session.IsNewSession)
                    {
                        string HeaderCookie = Contexto.Request.Headers["Cookie"];
    
                        if ((null != HeaderCookie && (HeaderCookie.IndexOf("ASP.NET_SessionId") >= 0)))
                        {
                            Contexto.Session.RemoveAll();
                            Contexto.Session.Clear();
                            Contexto.Session.Abandon();
    
                            JavaScriptResult js = new JavaScriptResult();
                            js.Script = "<script type=\"text/javascript\"> alert('Sua Sessão Expirou ');document.location.href='/Usuario/Index'; </script>";
                            js.ExecuteResult(filterContext.Controller.ControllerContext);
    
                            //filterContext.Result = js;
                           
                            //Contexto.Response.Redirect("~/Usuario/Index");
                             
                        }
                    }
                }
                
    
                    base.OnActionExecuting(filterContext);
                
            }
        }
    }

    O código acima é usado para redirecionar o usuário quando a sessão expira , o código funciona , porém quando tento usar o JavaScitpResult , da erro na página de uma outra sessão que estava inicializada. Eu só queria entender primeiro como usar JavaScritpResult , já procurei em vários lugares e não achei nada que explique de modo objetivo e com exemplos. Resumindo só que jogar na tela uma alert dizendo que a sessão expirou . Desde já agradeço.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br


    • Editado Davi Murilo quinta-feira, 2 de maio de 2013 13:01
    quinta-feira, 2 de maio de 2013 13:00

Respostas

  • Bom, não recomendo usar javascript para redirections em caso de sessão expirada.

    A prática recomendada seria inserir um TempData no Context e redirecionar para a página de login:

    filterContext.Controller.TempData.Add("Message", "Sessão expirada");

    Na view de login você pode fazer assim:

    @if(TempData["message"] != null)
    {
        <div id="alerta">
           @TempData["message"]
        </div>
    }

    • Marcado como Resposta Davi Murilo terça-feira, 7 de maio de 2013 19:50
    terça-feira, 7 de maio de 2013 05:00
    Moderador

Todas as Respostas