Eu tentei de duas maneiras: Response.Redirect () que não faz nada, além de chamar um novo método dentro do Controlador Base que retorna um ActionResult e retorna RedirectToAction () ... nenhum desses trabalhos.
Como posso redirecionar a partir do método OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
CloudMeta
fonte
fonte
new RedirectResult(url)
você também pode usarnew RedirectToAction(string action, string controller)
. Isso pode ter sido adicionado ao MVC depois que você postou sua resposta. Sua solução me colocou no caminho certo de qualquer maneira.new
RedirectToAction):filterContext.Result = RedirectToAction(string action, string controller);
Também pode ser feito desta maneira:
fonte
Crie uma classe separada,
Então, quando você cria um controlador, chame esta anotação como
fonte
RouteValueDictionary
construtor, pois ele reflete o roteamento em outro lugar no MVC. +1Se o controlador redirecionado herdar do mesmo
baseController
em que substituímos oOnActionExecuting
método, causamos loop recursivo. Suponha que o redirecionemos para a ação de login do controlador de conta, a ação de login chamará oOnActionExecuting
método e será redirecionada para a mesma ação de login repetidamente ... Portanto, devemos aplicar umOnActionExecuting
método de check-in para verificar se a solicitação é do mesmo controlador se portanto, não redirecione novamente a ação de login. aqui está o código:substituição protegida.
fonte