我希望在我的所有视图中都有一些viewData信息,所以我正在学习本教程
http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
所以我创建了自己的applicationController,但我需要从用户那里获取UserName。
然而,当我在构造函数中执行“HttpContext.User.Identity.Name”时,它始终为null。我不知道为什么会这样。
由于
好的基础就是诀窍。
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
Guid userId = coursesS.GetUserId(HttpContext.User.Identity.Name);
}
所以这似乎有效。现在唯一的事情似乎是经历了两次。就像我登录一样,似乎两次这样做。我猜是因为这就像把代码放在每个动作中一样。当我在我的网站上加载所有这些局部视图时,通过在我的控制器中调用它来实现这一点。
我应该缓存它,但我不确定如何。
答案 0 :(得分:7)
HttpContext.Current.User.Identity.Name
请注意您的通话中缺少 .Current 。
答案 1 :(得分:4)
尝试在ApplicationController的Initialize方法中初始化东西,HttpContext在构造函数中是不可用的。确保调用base.Initialize()或者你可以得到一些有趣的结果。
答案 2 :(得分:2)
您要访问的哪个特定属性为null?在检查Name属性之前,您可能想要检查User.Identity.IsAuthenticated == true。还要确保已启用表单身份验证,并且您确实已首先登录该站点。
答案 3 :(得分:0)
使用
Page.User.Identity.Name
答案 4 :(得分:0)
您在控制器中,请使用以下内容:
ControllerContext.HttpContext.Current.User.Identity.Name