Есть ли способ сделать это, не делая много 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());
}
}