我不太确定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
。
我试图搜索一些文章,却一无所获。该代码实际上有什么问题?
答案 0 :(得分:3)
当您只想显示标识下可用的“用户名”的值时,DisplayName
的用途是什么?显示名称方法尝试在传递给方法的嵌套属性上找到可用的属性display
。
您还记得这些MVC方法是如何工作的吗?每当我们在此类方法中传递任何表达式时,它将其视为嵌套属性并尝试查找最后一个属性节点。
c.User.Name
的示例,它将尝试使用name
,因此当我们传递xxx@example.net
时,它将尝试在嵌套表达式中找到最后一个属性,即xx@example.net
,并且值将是net
。
但是当您只想显示价值时,请使用
<span>@User.Identity.GetUserName()</span>