c# - 在 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 的每个方法。我确信还有另一种方法可以做到这一点。
解决方案
创建一个 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>
}
希望这可以帮助。
推荐阅读
- peoplesoft-app-engine - 在 PeopleCode 中使用 java.io.File 列出目录中的文件
- sorting - 具有 pypeln 映射阶段结果的有序迭代器
- python - 凯撒密码在某个短语的长度上进行缩放是行不通的
- python - ImportError:无法从“scipy.misc”导入名称“imread”
- node.js - Angular nodejs在添加文件时出错
- elasticsearch - 包含多个单词的搜索词在 Elasticsearch 中不起作用
- python - 试图让我的 GUI 程序显示时出错,我已经根据我所学的内容正确编码了整个程序
- javascript - 如何为具有焦点和上下文的区域图实现 d3 的输入更新退出模式?
- typescript - 如何在打字稿上将新值附加到 AWS DynamoDB 中的现有列表
- c# - C# 无法使用 Newtonsoft 修改 Json