Por*_*koi 4 c# asp.net-mvc session asp.net-mvc-controller
在我的Global.asax中,我在Session_Start()中有这个代码:
UserIntranet user = new UserIntranet();
user.Login = this.Request.LogonUserIdentity.Name.Split('\\')[1];
Session["user"] = user as UserIntranet;
Run Code Online (Sandbox Code Playgroud)
在我的BaseController中,我有这个属性:
public UserIntranet UserIntranet
{
get
{
return Session["user"] as UserIntranet;
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于所有使用此基本控制器但不在我的BaseController构造函数中的矿山控制器.
这个会议是空的......
在我的BaseController中尝试这个:
public BaseController()
{
ViewBag.UserMenu = this.UserIntranet.Login;/* Null */
}
Run Code Online (Sandbox Code Playgroud)
为什么?如何让用户直接在我的BaseController中登录?有什么更好的方法?
Dar*_*rov 19
这是正常的,所有HttpContext相关的对象,例如Session尚未在ASP.NET MVC控制器的构造函数中初始化.这可以在稍后阶段,在Initialize您可以使用的方法中发生:
public BaseController: Controller
{
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
ViewBag.UserMenu = this.UserIntranet.Login;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7522 次 |
| 最近记录: |