ASP中的LoginView控件模拟.NET MVC



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

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

但后来我意识到,我经常也需要隐藏外部内容(例如,链接所在菜单中的<li></li>)。我遵循最佳实践的建议,并有UrlHelperExtension,所以我的典型链接看起来像:

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

我不能尝试在RouteLink()上实现助手的想法,它将从适当的控制器方法中获取AuthorizeAttribute,对吗?。你的解决方案是什么?

我倾向于使用以下内容:

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

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

另一种可能的方法是使用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()
    }

最新更新