如何根据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
可以吗?你的解决方案是什么?
答案 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()
}