ASP.NET默认登录部分视图不工作(_L)

本文关键字:工作 视图 NET 默认 登录部 ASP | 更新日期: 2023-09-27 18:02:35

在我的ASP中。NET Core项目使用Individual User Accounts我做了一个小的更改,添加了一个角色检查来显示Register链接(默认情况下,它显示在右上角(,只在用户登录并处于管理员角色时显示,这样只有管理员在登录后才能将其他用户添加到系统中。但由于某些原因,即使您以AdminRole中的管理员身份登录,以下部分也不会显示Register链接。我已经通过放置一个断点来检查User.IsInRole("AdminRole")的评估结果是否为真:

_登录部分:

@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>
      }
  } 

更新

  1. 我已验证用户Admin在AdminRole
  2. 当我遍历代码时,它会将我带到工具提示显示为trueif (bTest)部分,之后我可以看到光标转到if语句的{部分,但随后它会跳到if语句的}部分。但这种情况可能正在发生,因为<li>....<'li>内部没有c#代码

更新2

即使我将if(bTest){...}硬编码为if(true){...},应用程序也不会显示Register链接所以,我认为问题的关键在于:为什么应用程序忽略if statement 内的Register链接

ASP.NET默认登录部分视图不工作(_L)

最初我认为这与代码块中的内容在没有显式@符号的情况下无法呈现有关。但html标签不应该出现这种情况。

然后我想标签可能已经被渲染并被某种风格隐藏了,或者由于导航栏的结构不正确而没有显示。事实证明,它被OP案件的标志图像所隐藏。