如何在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()
}