如何在共享视图(_Layout.cs.html)中进行条件标记



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

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

但我不知道如何做到这一点:

1.我无法访问ViewBag,否则我可以在ViewBag中设置用户角色并阅读它

  1. 我无法将共享视图强键入到某个模型

你有什么建议?

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

您可以使用User对象:

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

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

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

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

最新更新