Usuário com melhor resposta
Como usar o JavaScriptResult no MVC4

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
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
Todas as Respostas
-
Amigo,
Veja se algum desses links te ajudam:
http://mazharkaunain.blogspot.com.br/2011/02/how-to-use-aspnet-mvc-javascriptresult.html
http://stackoverflow.com/questions/7271005/asp-net-mvc-returning-javascriptresult-doesnt-work
http://www.cnblogs.com/artech/archive/2012/08/15/action-result-03.htmlEspero ter ajudado!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
Obrigado pela ajuda Lucas , creio que o ultimo link irá me ajudar em partes , mas ainda assim não é tão claro pra mim, pois sou iniciante e gostaria de encontrar um material mais claro. De qualquer forma ficarei ainda com o post em aberto para ver se ainda postaram mais resposta. Mesmo assim obrigado pela sua ajuda.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br -
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
-
Obrigado João vou implementar dessa forma
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br