我将ApplicationUser类扩展为具有2个额外属性,FirstName和LastName.两个属性都在数据库中正确保留.
public class ApplicationUser : IdentityUser { [Required] [StringLength(100)] public string FirstName { get; set; } [Required] [StringLength(100)] public string LastName { get; set; } }
我正在关注一个简单的初学者示例,并且有问题的代码是由New Project with User Authentication命令生成的:
@inject SignInManager<ApplicationUser> SignInManager @inject UserManager<ApplicationUser> UserManager @if (SignInManager.IsSignedIn(User)) { <form asp-area="" asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right"> <ul class="nav navbar-nav navbar-right"> <li> <a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> </li> <li> <button type="submit" class="btn btn-link navbar-btn navbar-link">Log out</button> </li> </ul> </form> }
而不是Hello @ UserManager.GetUserName(用户)!我想说你好???????.FirstName!
我找不到从视图中访问这些额外属性的方法.有关如何做到这一点的任何建议?
谢谢!
解决方法
您需要在服务中注入
UserManager(或在您的情况下查看).这有一个泛型类型参数,在你的情况下是ApplicationUser:
UserManager<ApplicationUser> userManager;
然后,您可以通过UserManager.Users属性查询用户.
或者,如果您需要获取当前用户并拥有其ClaimsPrincipal,则可以使用以下代码检索相应的ApplicationUser:
ApplicationUser user = await UserManager.GetUserAsync(claimsPrincipal); string firstName = user.FirstName;
虽然我(个人)对此不太热衷,但.Net Core使用以下语法支持injection into views.
@inject UserManager<ApplicstionUser> UserManager
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。