ASP.NET默认_LoginPartial视图中的微小更改无效

时间:2016-08-16 19:33:00

标签: c# razor visual-studio-2015 asp.net-core-mvc asp.net-mvc-partialview

在使用Individual User Accounts的ASP.NET核心项目中,我通过添加角色检查来显示Register链接(默认情况下显示在上方),进行了一些小改动右上角)仅在用户登录并且处于管理员角色时显示,以便只有管理员在登录后才能将其他用户添加到系统中。但由于某种原因,即使您以Register中的管理员身份登录,以下部分也不会显示AdminRole链接。我通过设置一个断点来检查User.IsInRole("AdminRole")评估为真:

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

更新

  1. 我已验证用户管理员位于AdminRole
  2. 当我单步执行代码时,它会转到工具提示显示为if (bTest)的{​​{1}}部分,之后我可以看到光标转到true if语句的一部分但是然后它跳转到if语句的{部分。但这可能正在发生,因为}里面没有c#代码。
  3. 更新2

    即使我将<li>....<\li>硬编码为if(bTest){...},该应用也不会显示if(true){...}链接。 所以,我认为问题的症结在于:为什么app会忽略Register

    中的Register链接

1 个答案:

答案 0 :(得分:1)

最初我认为它与代码块中的内容有关,如果没有显式的@符号则不会呈现。但这不应该发生在html标签上。

然后我认为标签可能已被渲染并被某些样式隐藏,或者由于导航条没有正确构造而无法显示。事实证明它被OP的案例的徽标图像隐藏了。