如何在共享视图中执行条件标记(_Layout.cshtml)

时间:2014-09-16 10:24:06

标签: asp.net-mvc razor master-pages

我有一个纯粹的CSS下拉菜单,我放在一个共享视图中,这样无论用户导航到菜单的哪个位置都可用。我想根据用户角色确定菜单项的可见性。像这样的东西(只是一个剃刀片段):

<ul>
@if(userRole==1||userRole==2)
   <li><a href="#">Submenu1</a></li>

但我不知道怎么做:

1。我无权访问ViewBag,否则我只能在ViewBag中设置用户角色并阅读它

  1. 我不能强烈地将共享视图键入某个模型。
  2. 你有什么建议?

    编辑:实际上您可以设置和访问ViewBag。这解决了这个问题。

2 个答案:

答案 0 :(得分:3)

您可以使用User对象:

<ul>
   @if(User.IsInRole("firstRole") || User.IsInRole("secondRole"))
   {
       <li><a href="#">Submenu1</a></li>
    }
...
</ul>

当然,此解决方案要求您使用RoleProvider

答案 1 :(得分:0)

对于简单的解决方案和多次使用,您可以试试这个

1) Create One BaseViewModel Class
2) put userRole property in that class (you can set this property where you want,you can set value in session and get..etc..etc..)
3) inherit BaseViewModel in required Model(may be one or more)
4) Use BaseViewModel in shared views