簡體   English   中英

ASP.NET默認_LoginPartial視圖中的微小更改無效

[英]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

  1. 我已經驗證用戶管理員在AdminRole
  2. 當我單步執行代碼時,它會將我帶到if (bTest)部分,工具提示顯示為true ,之后我可以看到光標轉到{ if語句的一部分,然后它跳轉到} if語句的一部分。 但這可能正在發生,因為<li>....<\\li>里面沒有c#代碼。

更新2

即使我硬編碼if(bTest){...}if(true){...} ,應用程序也不顯示Register鏈接。 所以,我認為問題的症結在於 :為什么app忽略了if statementRegister鏈接

最初我認為它與代碼塊中的內容有關,如果沒有顯式的@符號則不會呈現。 但這不應該發生在html標簽上。

然后我認為標簽可能已被渲染並被某些樣式隱藏,或者由於導航條沒有正確構造而無法顯示。 事實證明它被OP的案例的徽標圖像隱藏了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM