ASP.NET MVC中的LoginView控件模拟

时间:2011-06-15 09:54:31

标签: asp.net-mvc asp.net-mvc-3 rendering conditional

如何根据User.IsInRole()在ASP.NET MVC中进行条件内容呈现?尝试了我能在这里找到的所有比赛,但是仍然不满意。我需要根据用户角色隐藏动作链接,所以首先我想到了一个像

这样的帮手
public static MvcHtmlString ActionLink(this HtmlHelper html, string linkUrl, string linkText, object htmlAttributes, bool alwaysVisible, params string[] roles)

然后我意识到我经常需要隐藏外部内容(例如,在我的链接所在的菜单中<li></li>)。我遵循best practices的建议,并UrlHelperExtension,因此我的典型链接如下所示:

<a href="@Url.SomeStuff()">some stuff</a>

我无法尝试在RouteLink()上实现帮助器,从适当的控制器方法中获取AuthorizeAttribute可以吗?你的解决方案是什么?

2 个答案:

答案 0 :(得分:4)

我倾向于使用以下内容:

@if (User.IsInRole("Role")) {
<li>
  <a href="@Url.SomeStuff()">Some stuff</a>
<li>
}

这样,如果需要,我可以为每个角色提供多个链接。

答案 1 :(得分:-3)

您可能采用的另一种方法是使用CSS来隐藏基于角色隐藏的元素,例如

<li class=@(User.IsInRole('role')?"showClass":"hideClass")>
  <a href="@Url.SomeStuff()">Some stuff</a>
<li>

或者可能是Jquery的东西,例如:

    <li class="@User.Role")>
      <a href="@Url.SomeStuff()">Some stuff</a>
    <li>

    $(document).ready(function () {
       $(".SomeRole").hide()
    }