He intentado de dos maneras: Response.Redirect () que no hace nada, además de llamar a un nuevo método dentro del controlador base que devuelve un ActionResult y hace que devuelva RedirectToAction () ... ninguno de estos funciona.
¿Cómo puedo hacer una redirección desde el método OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
CloudMeta
fuente
fuente
new RedirectResult(url)
usted también podría usarnew RedirectToAction(string action, string controller)
. Es posible que esto se haya agregado a MVC después de publicar su respuesta. Su solución me puso en el camino correcto de todos modos.new
) RedirectToAction:filterContext.Result = RedirectToAction(string action, string controller);
También se puede hacer de esta manera:
fuente
Crea una clase separada,
Luego, cuando cree un controlador, llame a esta anotación como
fuente
RouteValueDictionary
constructor, ya que refleja el enrutamiento en otro lugar en MVC. +1Si el controlador redirigido hereda del mismo
baseController
donde anulamos elOnActionExecuting
método, causaremos un bucle recursivo. Supongamos que lo redirigimos a la acción de inicio de sesión del controlador de cuenta, luego la acción de inicio de sesión llamará alOnActionExecuting
método y se redirigirá a la misma acción de inicio de sesión una y otra vez ... Por lo tanto, debemos aplicar unOnActionExecuting
método de registro para verificar si la solicitud es del mismo controlador si entonces no redirija la acción de inicio de sesión nuevamente. Aquí está el código:anulación protegida.
fuente