Установить filterContext.Result
С именем маршрута:
filterContext.Result = new RedirectToRouteResult("SystemLogin", routeValues);
Вы также можете сделать что-то вроде:
filterContext.Result = new ViewResult
{
ViewName = SharedViews.SessionLost,
ViewData = filterContext.Controller.ViewData
};
Если вы хотите использовать RedirectToAction
:
Вы можете сделать публичный RedirectToAction
метод на вашем контроллере ( предпочтительно на его базовом контроллере ), который просто вызывает защищенный RedirectToAction
от System.Web.Mvc.Controller
.Добавление этого метода позволяет сделать публичный вызов вашего RedirectToAction
из фильтра.
public new RedirectToRouteResult RedirectToAction(string action, string controller)
{
return base.RedirectToAction(action, controller);
}
Тогда ваш фильтр будет выглядеть примерно так:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = (SomeControllerBase) filterContext.Controller;
filterContext.Result = controller.RedirectToAction("index", "home");
}