Definir filterContext.Result
Com o nome da rota:
filterContext.Result = new RedirectToRouteResult("SystemLogin", routeValues);
Você também pode fazer algo como:
filterContext.Result = new ViewResult
{
ViewName = SharedViews.SessionLost,
ViewData = filterContext.Controller.ViewData
};
Se você deseja usar RedirectToAction
:
Você pode criar um RedirectToAction
método público no seu controlador (de preferência no controlador base ) que simplesmente chama o protegido RedirectToAction
de System.Web.Mvc.Controller
. A adição deste método permite uma chamada pública para você a RedirectToAction
partir do filtro.
public new RedirectToRouteResult RedirectToAction(string action, string controller)
{
return base.RedirectToAction(action, controller);
}
Em seguida, seu filtro seria algo como:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = (SomeControllerBase) filterContext.Controller;
filterContext.Result = controller.RedirectToAction("index", "home");
}