Asp.net mvc 形式验证问题

Asp.net mvc 形式验证问题,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我在控制器中对这样的用户进行“表单身份验证”: FormsAuthentication.SetAuthCookie(User.Email, false); (当然,前提是凭证有效) 通常,我可以在视图中这样访问用户的用户名(我刚开始使用razor): 不幸的是,我得到: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法对空引用执行运行时绑定 我认为: FormsAuthentication.SetAuthCookie(User.

我在控制器中对这样的用户进行“表单身份验证”:

FormsAuthentication.SetAuthCookie(User.Email, false);
(当然,前提是凭证有效)

通常,我可以在视图中这样访问用户的用户名(我刚开始使用razor):

不幸的是,我得到:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法对空引用执行运行时绑定

我认为:

 FormsAuthentication.SetAuthCookie(User.Email, false);
工作不正常(尽管登录和随后的重定向工作正常)

有人看到什么不对劲吗?谢谢


Christian

您可以使用
HttpContext.Current.User.Identity.Name
。我建议将用户名作为ViewModel的一部分传入,而不是转义到Asp.Net framework区域。

不要使用页面。您可以从视图中自己访问用户

@Html.Encode(User.Identity.Name)

你能解释一下为什么这是个坏主意吗?景观应该尽可能少地了解它的环境。例如,通过模型将其传递到视图中,您可以更改用户名的来源,而不必更新依赖它的所有视图。您只需要更新模型。问题是用户名是由母版页编写的。在这种情况下,如何发送viewdata?谢谢,在将aspx页面转换为razor视图时遇到了这个问题。没问题。很高兴我能帮忙。
@Html.Encode(User.Identity.Name)