基于Asp.net MVC4(Razor)中的用户角色隐藏和显示Layout.cshtml的div标签

时间:2013-03-25 07:08:21

标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

我有一个母版页面,其中有一个名为user的角色菜单,其他菜单是Admin的角色,所以我愿意检查用户的角色并显示一些div标签并隐藏其他基于用户角色的。

因为,我们没有layout.cshtml的控制器,所以我如何为布局视图设置viewModel 其中我可以检查当前用户的角色

如何对layout.cshtml进行基于角色的检查。

我一直在通过以下问题,但现在还没有得到答案

How to Show or hide controls based on roles - ASP.NET MVC 4 Razor

那么,请告诉我可能的解决方案以及哪种方式最适合在layout.cshtml中应用基于角色的检查

2 个答案:

答案 0 :(得分:11)

您可以使用User.IsInRole方法:

@if (User.IsInRole("admin"))
{
    <li>Only the admin can see this menu item</li>
}

答案 1 :(得分:3)

您可以使用以下代码进行基于角色的检查

@if(Request.IsAuthenticated)

{
    if(User.IsInRole("Admin")
    {
     <Ul Class="SubMenuItem">

     <li> this menu item is for Admin role</li>
     </Ul>
    }
     if(User.IsInRole("User")
    {
     <Ul Class="SubMenuItem">

     <li> this menu item is for User role</li>
     </Ul>
    }
}
  

对于未知用户

else
{
 <Ul Class="SubMenuItem">

     <li> this menu item is for Unknown user</li>
     </Ul>
}