После небольшого исследования того, как работает код @await Html.PartialAsync ("_ LoginPartial"), я нашел способ выполнить то, что хотел.В приведенном ниже коде из файла _LoginPartial.cshtml я сначала проверяю, вошел ли пользователь. Затем я проверяю, находится ли пользователь в определенной роли.Если пользователь находится в указанной роли, то я испускаю разметку, которую я хочу для этой роли.
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-page="/ScheduleManagement/Scheduling">Schedule Shifts</a>
</li>
@if (User.IsInRole("AgencyAdministrator"))
{
<li>
<a asp-page="/ClientManagement/Index">Client Management</a>
</li>
<li>
<a asp-page="/ProjectManagement/Index">Project Management</a>
</li>
<li>
<a asp-page="/ShiftEmployeeManagement/Index">Shift Employee Management</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Types Management<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a asp-page="/TypeManagement/AddressType/Index">Address Type Management</a>
</li>
<li>
<a asp-page="/TypeManagement/DomainTypes/Index">Domain Type Management</a>
</li>
<li>
<a asp-page="/TypeManagement/EmailType/Index">Email Type Management</a>
</li>
<li>
<a asp-page="/TypeManagement/SkillLevelType/Index">Skill Level Type Management</a>
</li>
<li>
<a asp-page="/TypeManagement/SkillType/Index">Skill Type Management</a>
</li>
</ul>
</li>
}
<li>
<a 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">Log out</button>
</li>
</ul>
</form>
}
else
{
<ul class="nav navbar-nav">
<li><a asp-page="/About">About</a></li>
<li><a asp-page="/Contact">Contact</a></li>
</ul>
}
Это действительно показывает силу DI, поскольку у меня есть доступ только к SignInManager и UserManager из-за этого.
В любом случае, я уверен, что могут быть другие способы выполнить то, что я хотел, отображая элементы интерфейса на основе роли пользователя или пользователя, но это, безусловно, работает.