加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

razor – 从ASP.net Core 2中的视图访问自定义ApplicationUser属

发布时间:2020-12-16 07:20:47 所属栏目:asp.Net 来源:网络整理
导读:我将ApplicationUser类扩展为具有2个额外属性,FirstName和LastName.两个属性都在数据库中正确保留. public class ApplicationUser : IdentityUser{ [Required] [StringLength(100)] public string FirstName { get; set; } [Required] [StringLength(100)] p
我将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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读