Asp.net MVC3,使用构造函数

Exp*_* be 1 asp.net asp.net-mvc-3

我想在构造函数方法中将cookie值定义为类变量,以使所有方法都可以使用Cookie.

但我收到一条错误消息,

你调用的对象是空的.

 public class OrdersController : Controller
{   
    string userData;

    public orderConroller(){
       string cookieName = FormsAuthentication.FormsCookieName;
           HttpCookie authCookie = Request.Cookies[cookieName];
       FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
           userData = authTicket.UserData;
    }

    public void a(){
      //I need Cookie
    }
    public void b(){
      //I need Cookie
    }
    public void c(){
      //I need Cookie
    }
    public void d(){
      //I need Cookie
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?@.@

谢谢!

Dar*_*rov 6

您不能HttpContextRequest控制器构造函数中使用(在您尝试访问对象的情况下),因为它尚未初始化.您可以访问它的最早方法是Initialize您可以覆盖的方法.

所以:

public class OrdersController : Controller
{   
    private string userData;

    protected override void Initialize(RequestContext requestContext) 
    {
        base.Initialize(requestContext);
        var request = requestContext.HttpContext.Request;
        string cookieName = FormsAuthentication.FormsCookieName;
        HttpCookie authCookie = request.Cookies[cookieName];
        FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        userData = authTicket.UserData;
    }

    public void a() {
      //I need Cookie
    }
    public void b() {
      //I need Cookie
    }
    public void c() {
      //I need Cookie
    }
    public void d() {
      //I need Cookie
    }
}
Run Code Online (Sandbox Code Playgroud)