gpt4 book ai didi

c# - 在 asp.net mvc 的母版页上有条件地渲染部分

转载 作者:行者123 更新时间:2023-11-30 13:42:50 25 4
gpt4 key购买 nike

您好,我在 asp.net mvc web 应用程序的母版页上定义了以下菜单

<%Html.RenderPartial("AdminMenu"); %>
<%Html.RenderPartial("ApproverMenu"); %>
<%Html.RenderPartial("EditorMenu"); %>

但是我只想根据登录用户角色显示正确的菜单。我如何实现这一目标?

我开始认为我的策略不正确,那么是否有更好的方法来实现同样的目标?

最佳答案

举个简单的例子,你可以这样做:

<% 
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);
}

关于c# - 在 asp.net mvc 的母版页上有条件地渲染部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com