【发布时间】:2020-04-15 16:14:19
【问题描述】:
我想在 _Layout 视图的导航栏上显示当前的 ApplicationUsers Firstname+Lastname。我发现你可以像这样从当前的 RenderedBody 控制器传递你的 viewbag:
private readonly IHttpContextAccessor _httpContext;
private readonly UserManager<ApplicationUser> _userManager;
private readonly ApplicationUser _user;
public HomeController(IHttpContextAccessor httpContextAccessor, UserManager<ApplicationUser> 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 视图中:
<strong class="font-bold">@ViewBag.Username</strong>
这种方法似乎违背了常规,并且对于每个视图都将是一个巨大的痛苦。实现这一目标的标准是什么?
【问题讨论】:
标签: c# asp.net-core