[英]Get Logged in UserName in view in ASP.NET Core
我的_layout.cshtml
有一个“ Log Out
按钮。 我想在“注销”按钮中显示“已登录”用户名,以查看当前登录的用户。
<a class="btn btn-sm" asp-action="" asp-controller="">Log Out( @ViewBag.LoggedInUserName )</a>
在我的控制器中,我使用了:
ViewBag.LoggedInUserName = userManager.GetUserName(HttpContext.User);
这样,我需要在每个控制器中的每个方法中都向ViewBag声明。 我相信还有另一种方法可以做到。
您不需要使用ViewBag
从控制器方法传递它。 您可以简单地执行以下操作:
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
<a class="btn btn-sm" asp-action="" asp-controller="">Log Out(@UserManager.GetUserName(User))</a>
注意:如果要使用诸如ApplicationUser
类的方式扩展IdentityUser
,则将IdentityUser
替换为ApplicationUser
,如下所示:
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
创建PartialView并将其放置在共享的_layout.cshtml中。
<partial name="_LoginPartial" />
在您的PartialView中,您可以投放类似以下代码的广告:
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-area="Identity" asp-page="/Account/Logout" asp-route
returnUrl="@Url.Action("Index", "Home", new { area = "" })" method="post"
id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-area="Identity" asp-page="/Account/Manage/Index"
title="Manage">Hello @UserManager.GetUserName(User)!</a>
</li>
<li>
<button type="submit" class="btn btn-link navbar-btn navbar-
link">Logout</button>
</li>
</ul>
</form>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.