![](/img/trans.png)
[英]ASP.NET MVC 4 Default _LoginPartial template Logout not working
[英]A minor change in ASP.NET default _LoginPartial view not working
在使用Individual User Accounts
ASP.NET核心項目中,我通過添加角色檢查來顯示“ Register
鏈接(默認情況下,顯示在右上角),僅在用戶已記錄時顯示在和管理員角色中,以便只有管理員在登錄后才能將其他用戶添加到系統中。 但由於某種原因,即使您以AdminRole
的管理員身份登錄,以下部分也不會顯示“ Register
鏈接。 我通過放置一個斷點來檢查User.IsInRole("AdminRole")
計算結果為true:
_LoginPartial :
@model ABCTest.Models.ABCTest.CurrentYear
@using Microsoft.AspNetCore.Identity
@using ABCTest.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-area="" asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm">
<ul class="nav navbar-nav navbar-left">
<li><a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Welcome @UserManager.GetUserName(User), you are working with year @Model.CurrentYr - @(@Model.CurrentYr + 1)</a></li>
</ul>
<ul class="navbar-right" style="list-style:none;">
@{bool bTest = User.IsInRole("AdminRole");
if (bTest)
{
<li><a asp-area="" asp-controller="Account" asp-action="Register">Register</a></li>
}
}
<li><button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button></li>
</ul>
</form>
}
else
{
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="" asp-controller="Account" asp-action="Login">Log in</a></li>
</ul>
}
即使登錄用戶在AdminRole中也不顯示的部分 :
@{bool bTest = User.IsInRole("AdminRole");
if (bTest)
{
<li><a asp-area="" asp-controller="Account" asp-action="Register">Add User</a></li>
}
}
UPDATE
AdminRole
if (bTest)
部分,工具提示顯示為true
,之后我可以看到光標轉到{
if語句的一部分,然后它跳轉到}
if語句的一部分。 但這可能正在發生,因為<li>....<\\li>
里面沒有c#代碼。 更新2 :
即使我硬編碼if(bTest){...}
, if(true){...}
,應用程序也不顯示Register
鏈接。 所以,我認為問題的症結在於 :為什么app忽略了if statement
的Register
鏈接
最初我認為它與代碼塊中的內容有關,如果沒有顯式的@符號則不會呈現。 但這不應該發生在html標簽上。
然后我認為標簽可能已被渲染並被某些樣式隱藏,或者由於導航條沒有正確構造而無法顯示。 事實證明它被OP的案例的徽標圖像隱藏了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.