我想在我的_Layout视图的导航栏上显示当前的ApplicationUsers Firstname + Lastname.我发现你可以从当前的RenderedBody控制器传递你的viewbag,如下所示:
private readonly IHttpContextAccessor _httpContext; private readonly UserManager_userManager; private readonly ApplicationUser _user; public HomeController(IHttpContextAccessor httpContextAccessor, UserManager userManager) { _httpContext = httpContextAccessor; _userManager = userManager; _user = _userManager.Users.Single(u => u.Id == _httpContext.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); }
在控制器中:
public IActionResult Index() { ViewBag.Username = $"{_user.FirstName} {_user.Surname}"; return View(); }
最后在我的_Layout视图中:
@ViewBag.Username
这种方法似乎与谷物相悖,对每一种观点来说都是一种巨大的痛苦.实现这一目标的标准是什么?
您可以将UserManager
和插入SignInManager
视图中。
@inject SignInManagerSignInManager @inject UserManager UserManager
然后,您可以测试用户是否使用登录SignInManager.IsSignedIn(User)
并使用显示用户名UserManager.GetUserName(User)
@if (SignInManager.IsSignedIn(User)) {}
PS。还需要添加这两种using
以及
@using Microsoft.AspNetCore.Identity @using MyWebApp.Models