我有一个asp.net MVC 3系统,不同的动作有不同的权限。
使用定义所需用户权限的属性管理所有权限。
我还想删除不允许用户点击的任何按钮(或链接)。
如果没有在我的观点中做很多if-s,有没有办法这样做?
感谢。
答案 0 :(得分:3)
如果没有在我的观点中做很多if-s,有没有办法这样做?
您可以编写将生成这些按钮的自定义HTML帮助程序。例如:
@Html.Button("button text", "role1,role2");
自定义帮助程序将检查当前用户是否拥有所需角色之一,并且仅在这种情况下生成相应的按钮。
例如:
public static class HtmlExtensions
{
public static IHtmlString Button(this HtmlHelper htmlHelper, string buttonText, string roles)
{
var rolesSplit = (roles ?? string.Empty).Split(',');
var user = htmlHelper.ViewContext.HttpContext.User;
if (!user.Identity.IsAuthenticated || !rolesSplit.Any(user.IsInRole))
{
return MvcHtmlString.Empty;
}
var button = new TagBuilder("button");
button.SetInnerText(buttonText);
return new HtmlString(button.ToString());
}
}