User.Identity.GetUserName() return错了

User.Identity.GetUserName() return wrong

我不太确定 Razor 视图中的这个简单代码有什么问题:

@using Microsoft.AspNet.Identity
<span>@Html.DisplayName(User.Identity.GetUserName())</span>

我检查了 AspNetUsers table 字段 UserName 中的值,它是 xxx@example.com.

相反,return xxx@example.com,它只是 returns com

出于好奇,我把它改成了xxx@example.net,实际上它只是returns net

我尝试搜索一些文章,但一无所获。该代码实际上有什么问题?

当你只想显示identity下可用的'User Name'的值时,这里的DisplayName有什么用?显示名称方法尝试在您传递给方法的嵌套 属性 上找到可用的属性 display

你还记得这些 MVC 方法是如何工作的吗??每当我们在此类方法中传递任何表达式时,它都会将其视为嵌套 属性 并尝试找到最后一个 属性 节点。

c.User.Name 的示例它将尝试使用 name 因此当我们传递 xxx@example.net 时它会尝试在嵌套表达式中找到最后一个 属性 即 xx@example.net 并且值将是 net.

但是当你只想显示值时使用

<span>@User.Identity.GetUserName()</span>