在中执行重定向的最佳方法是什么ActionFilterAttribute?我有一个ActionFilterAttribute电话,IsAuthenticatedAttributeFilter并检查了会话变量的值。如果变量为false,则我希望应用程序重定向到登录页面。我更愿意使用路由名称进行重定向,SystemLogin但是此时任何重定向方法都可以。
ActionFilterAttribute
IsAuthenticatedAttributeFilter
SystemLogin
设置filterContext.Result
带有路线名称:
filterContext.Result = new RedirectToRouteResult("SystemLogin", routeValues);
您还可以执行以下操作:
filterContext.Result = new ViewResult { ViewName = SharedViews.SessionLost, ViewData = filterContext.Controller.ViewData };
如果要使用RedirectToAction:
RedirectToAction
你可以做一个公共RedirectToAction方法控制器上( 最好是在它的基本控制器 ),简单地调用保护RedirectToAction的System.Web.Mvc.Controller。添加此方法可允许 您 RedirectToAction从过滤器中公开呼叫 您 。
System.Web.Mvc.Controller
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"); }