繁体   English   中英

在ASP.NET MVC 2控制器中初始化例程的重定向

[英]redirect in asp.net mvc 2 controller initialize routine

如果会话变为空,我需要从任何控制器重定向到登录页面,我尝试了此操作但它不起作用

protected override void Initialize(System.Web.Routing.RequestContext requestContext) {
    base.Initialize(requestContext);
    if (Session["FirstName"] == null) {
        ret.msg = Resources.Resources.error_session_expired;
        ret.status = "danger";
        RedirectToAction("LogIn", "Account", new {
            area = ""
        }); // <-- i added a return in front of this, but it was red underlined
    }
}

做这个的最好方式是什么

使用动作过滤器:

public class RedirectIfNullSessionAttribute : ActionFilterAttribute
{
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    if (filterContext.HttpContext.Session["FirstName"] == null) 
    {
      filterContext.Result = new RedirectToRouteResult(
        new RouteValueDictionary 
          { 
            { "controller", "Account" }, 
            { "action", "Login" } 
          });
    }
  }
}

然后将其应用于您的控制器:

[RedirectIfNullSession]
public class MyController : Controller
{
  ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM