首页 > 解决方案 > 在 ASP.NET Core 的视图中登录用户名

问题描述

Log Out_layout.cshtml. 我想在注销按钮内显示登录用户名,以查看当前登录的用户。

<a class="btn btn-sm" asp-action="" asp-controller="">Log Out( @ViewBag.LoggedInUserName )</a>

在我的控制器中,我使用了:

ViewBag.LoggedInUserName = userManager.GetUserName(HttpContext.User); 

通过这种方式,我需要在每个控制器中声明 ViewBag 的每个方法。我确信还有另一种方法可以做到这一点。

标签: c#asp.net-coreasp.net-core-mvc

解决方案


创建一个 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>
}

希望这可以帮助。


推荐阅读