日期:2014-05-17  浏览次数:20438 次

MVC.NET的项目中,如何在控制器的构造函数里跳转到其他页面
MVC.NET的项目中,如何在控制器的构造函数里跳转到其他页面
例如,我想验证是否登录,如果没有,跳转到登录页,代码如下:
public class SpaceBaseController : Controller
    {
        public SpaceBaseController()
        {
            if (string.IsNullOrEmpty(Common.LoginUserName) == true)
            {
                string url = System.Web.HttpContext.Current.Request.Url.ToString();
                System.Web.HttpContext.Current.Session["url"] = url;

                //我希望在这里就可以跳转,现在也确实可以跳转,但是在登录成功以后获取不到Session里的值
                System.Web.HttpContext.Current.Response.Redirect("/member/login");
            }
        }
    }


public class SpaceController:SpaceBaseController 
{
     public ActionResult Update()
     {
         //但是父类的构造函数里没有跳转,继续运行到这里了,这里运行完后才跳转
          Member member = new Member(Common.LoginUserName);
          
      }
}

我现在希望能够在父类就可以直接跳转,按照我上边父类里的跳转方法,在登录成功以后获取不到Session里的值,也就是说无法跳转到登录前的页面


------解决方案--------------------
用过滤器实现。



    public class UserAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (用户没有登录) {
                filterContext.Result = new RedirectResult(跳转的url, true);
            }
         }
    }






[UserAuthorize]
public ActionResult Update()