Установить 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");
}