ASP Net Core MVC:如何在部分视图中获取 aspnet users 列



我在 aspnetusers 表中添加了用户定义的列hasAvatar。但是,当我在_LoginPartial.cshtml中时,我如何获取当前用户的信息?

我想获得这样的信息

@if (myUser(User).hasAvatar==true)
{
    <p>..avatar</p>
}
else
{
    <p>please login</p>
}

使用视图组件:

public class LoginViewComponent : ViewComponent
{
    private readonly UserManager<ApplicationUser> _userManager;
    public LoginViewComponent(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
    }
    public async Task<IViewComponentResult> InvokeAsync()
    {
        var user = await _userManager.GetUserAsync(HttpContext.User).ConfigureAwait(false);
        return View(user);
    }
}

然后,将_LoginPartial.cshtml的内容移动到 ViewsSharedComponentsLoginDefault.cshtml 。添加一个 ApplicationUser@model声明,然后就可以在 ApplicationUser 上使用 Model.hasAvatar 或任何其他属性。

最后,在您之前渲染_LoginPartial的位置,将该代码替换为:

@await Component.InvokeAsync("Login");

您可以在视图中注入UserManager并从中获取当前用户:

@inject UserManager<User> UserManager
@{
    var myUser = await UserManager.GetUserAsync(User);
}

您还可以通过以下方式检查当前请求是否经过身份验证:

@User.Identity.IsAuthenticated

相关内容

  • 没有找到相关文章