Rip*_*ppo 3 c# asp.net-mvc master-pages renderpartial
嗨,我在asp.net mvc Web应用程序的主页上定义了以下菜单
<%Html.RenderPartial("AdminMenu"); %>
<%Html.RenderPartial("ApproverMenu"); %>
<%Html.RenderPartial("EditorMenu"); %>
Run Code Online (Sandbox Code Playgroud)
但是,我想只显示正确的菜单,具体取决于登录的用户角色.我该如何实现这一目标?
我开始认为我的策略是不正确的,那么是否有更好的方法来实现同样的目标?
举个简单的例子,你可以这样做:
<%
if (User.IsInRole("AdminRole")
Html.RenderPartial("AdminMenu");
else if (User.IsInRole("Approver")
Html.RenderPartial("ApproverMenu");
else if (User.IsInRole("Editor")
Html.RenderPartial("EditorMenu");
%>
Run Code Online (Sandbox Code Playgroud)
或者您的用户可能处于多个角色,在这种情况下,类似这样的逻辑可能更合适:
<%
if (User.IsInRole("AdminRole")
Html.RenderPartial("AdminMenu");
if (User.IsInRole("Approver")
Html.RenderPartial("ApproverMenu");
if (User.IsInRole("Editor")
Html.RenderPartial("EditorMenu");
%>
Run Code Online (Sandbox Code Playgroud)
或者使用扩展方法为后者提供更优雅的方法:
<%
Html.RenderPartialIfInRole("AdminMenu", "AdminRole");
Html.RenderPartialIfInRole("ApproverMenu", "Approver");
Html.RenderPartialIfInRole("EditorMenu", "Editor");
%>
Run Code Online (Sandbox Code Playgroud)
同
public static void RenderPartialIfInRole
(this HtmlHelper html, string control, string role)
{
if (HttpContext.Current.User.IsInRole(role)
html.RenderPartial(control);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |