В качестве простого примера, вы можете сделать это:
<%
if (User.IsInRole("AdminRole")
Html.RenderPartial("AdminMenu");
else if (User.IsInRole("Approver")
Html.RenderPartial("ApproverMenu");
else if (User.IsInRole("Editor")
Html.RenderPartial("EditorMenu");
%>
или, возможно, ваши пользователи могут быть в несколько ролей, в этом случае что-то вроде этой логики может быть более подходящим:
<%
if (User.IsInRole("AdminRole")
Html.RenderPartial("AdminMenu");
if (User.IsInRole("Approver")
Html.RenderPartial("ApproverMenu");
if (User.IsInRole("Editor")
Html.RenderPartial("EditorMenu");
%>
Или более элегантный подход для последних с использованием метода расширения:
<%
Html.RenderPartialIfInRole("AdminMenu", "AdminRole");
Html.RenderPartialIfInRole("ApproverMenu", "Approver");
Html.RenderPartialIfInRole("EditorMenu", "Editor");
%>
с
public static void RenderPartialIfInRole
(this HtmlHelper html, string control, string role)
{
if (HttpContext.Current.User.IsInRole(role)
html.RenderPartial(control);
}
Да, я надеялся на что-то более элегантное! Но я согласен, что это работа. – Rippo
Спасибо за ответ, хотя! – Rippo
@ Rippo да, я понимаю. Фактически, вы можете попробовать метод расширения. Я приведу пример. – Joseph