我试过这样得到它:
User.Identity.GetUserName()
像这样:
User.Identity.Name
但我收到的是电子邮件,而不是 UserName
属性。
最佳答案
您无需更改 _LoginPartial.cshtml 文件中的任何内容。相反,在 AccountController 中将您的注册帖子从
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
为此:
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
请记住,如果您已经运行了第一个代码并在您的数据库中注册了一个试用用户,那么用户名将设置为电子邮件,因此请从您的 AspNetUser 表中删除该条目或适本地更新用户名和规范化用户名字段。
更新:如此处所述gethub Entity API 根据 NormalizedUserName 检查登录。因此,当您在 RegisterViewModel 上向用户提供输入不是电子邮件的值时,您需要删除 LoginViewModel 中的 [EmailAddress] 验证。
关于c# - 如何在 _LoginPartial.cshtml 中获取用户名(不是电子邮件)? - ASP.NET 标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246255/