我不太确定 Razor 视图中这个简单代码有什么问题:
@using Microsoft.AspNet.Identity
<span>@Html.DisplayName(User.Identity.GetUserName())</span>
我已经检查了我的AspNetUsers
表字段中的值UserName
它xxx@example.com
.
相反,返回xxx@example.com
,它只返回com
。
出于好奇,我将其更改为xxx@example.net
,确实它只是返回net
。
我试图搜索一些文章,但一无所获。该代码实际上出了什么问题?
当您只想显示标识下可用的"用户名"值时,这里DisplayName
有什么用?显示名称方法尝试查找传递给方法的嵌套属性上可用的属性display
。
你还记得这些MVC方法是如何工作的吗? 每当我们在此类方法中传递任何表达式时,它都会将其视为嵌套属性并尝试查找最后一个属性节点。
例如c.User.Name
它将尝试使用name
,因此当我们传递xxx@example.net
时,它会尝试在嵌套表达式中找到xx@example.net
的最后一个属性,并且值将被net
。
但是当你只是想显示价值时,只需使用
<span>@User.Identity.GetUserName()</span>