User.Identity.GetUserName()返回错误

时间:2018-08-14 06:11:29

标签: c# asp.net-mvc-5 asp.net-identity razor-pages

我不太确定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

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

1 个答案:

答案 0 :(得分:3)

当您只想显示标识下可用的“用户名”的值时,DisplayName的用途是什么?显示名称方法尝试在传递给方法的嵌套属性上找到可用的属性display

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

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

但是当您只想显示价值时,请使用

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