我有一个MVC WebApp,在这里我成功地验证并将Azure广告角色拖到我的应用程序中。基于这个角色,我如何在我的_Layout.cshtml文件中显示或隐藏“home”等导航栏选项卡?
我可以使用[Authorize(Roles = "")]授权控制器中的页面,但我想隐藏在导航栏级别。我遗漏了哪一行代码才能产生这种动态?
下面是我希望实现的_Layout.cshtml文件中的代码:
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("My Project", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@Html.Partial("_LoginPartial")
</div>提前感谢您的帮助!
发布于 2017-06-20 15:18:56
在MVC上,您有User对象,它向您提供有关日志用户的信息。只要使用User.IsInRole(roleName)方法,它就能工作。
示例:
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("My Project", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
@if(User.IsInRole("Admin"))
{
//Only the user with "Admin" role can see this
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
}
</ul>
@Html.Partial("_LoginPartial")
</div>https://stackoverflow.com/questions/44656940
复制相似问题