我在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
的内容移动到Views\Shared\Components\Login\Default.cshtml
。添加@model
的ApplicationUser
声明,然后您可以使用Model.hasAvatar
或ApplicationUser
上的任何其他属性。
最后,在您之前渲染_LoginPartial
的位置,将代码替换为:
@await Component.InvokeAsync("Login");
您可以在视图中注入UserManager
并从中获取当前用户:
@inject UserManager<User> UserManager
@{
var myUser = await UserManager.GetUserAsync(User);
}
您还可以检查当前请求是否通过以下方式进行身份验证:
@User.Identity.IsAuthenticated