在我的MVC 4项目中,我有2个菜单,一个顶部固定菜单和一个侧面菜单。即使用户未登录,顶部菜单也始终可见。但是侧边菜单仅在用户登录时可见。但是如果用户具有管理员角色,则他可以访问“创建用户”视图,并且我希望侧视菜单在该视图中不可见。我怎么能这样做?
这是布局视图中的侧边菜单部分:
@if (Request.IsAuthenticated)
{
<div class="row">
<div class="col-md-3">
<p class="lead">Comparações</p>
<div class="list-group">
<a href="#" class="list-group-item">Item 1</a>
<a href="#" class="list-group-item">Item 2</a>
</div>
</div>
</div>
}
答案 0 :(得分:1)
我用过css - 你可以把它变成&#34; HideMenu.cshtml&#34;并在任何您不想看菜单的cshtml文件中拨打@RenderPage("HideMenu.cshtml")
。
<style>
body {
padding-top : 0px;
}
.navbar {
display: none;
}
</style>
在这个css中,&#34; navbar&#34;是我想隐藏的菜单项的类。
使用浏览器中的F12查找要隐藏的元素的类名。
答案 1 :(得分:0)
我使用ViewBag从控制器设置一个标志。此标志确定是否执行某些操作,但请确保缺失值也有效,并指示默认操作。在这种情况下,只有受布局附加部分影响的操作可以自由地将ViewBag项设置为特定值。
例如,我在布局中有一个登录表单。但显然,当用户访问注册页面时,不应该呈现登录。因此,有一个默认为False的HideSignInForm(并且缺少等于False)。在_Layout.cshtml中,这段代码涵盖了这一点:
bool hideSignInForm = false;
if (ViewBag.HideSignInForm != null)
{
hideSignInForm = (bool)ViewBag.HideSignInForm;
}
稍后在_Layout.cshtml中,我通常使用该标志:
if (!hideSignInForm)
{
<div id="signInUser">
...
</div>
}
答案 2 :(得分:0)
尝试:
@if (Request.IsAuthenticated && !HttpContext.Current.User.IsInRole("Admin"))
{
<div class="row">
<div class="col-md-3">
<p class="lead">Comparações</p>
<div class="list-group">
<a href="#" class="list-group-item">Item 1</a>
<a href="#" class="list-group-item">Item 2</a>
</div>
</div>
</div>
}