我正在尝试根据用户的角色设置包含不同链接页面的菜单。 使用带有asp:menu navigationMenu的母版页,它只使用一个链接创建,然后根据用户的角色模式链接添加。
Menu menu = masterPage.FindControl("NavigationMenu") as Menu;
MenuItemCollection menuItems = menu.Items;
MenuItem menuItem;
switch (role)
{
case "Level 1":
break;
case "Level 2":
menuItem = new MenuItem("Auditing", "", "", "~/Auditing.aspx");
menuItems.Add(menuItem);
menuItem = new MenuItem("Team Manager", "", "", "~/TeamManager.aspx");
menuItems.Add(menuItem);
break;
}
这仅适用于当前页面。如果在菜单上单击了一个链接,那么该新页面只有一个主页在运行时广告的链接。
有没有办法实际更新“navigationMenu”asp:menu
值,以便它们在整个站点中保持不变?
答案 0 :(得分:1)
我认为你应该考虑在asp.net菜单中使用sitemap
。如果您设置securityTrimmingEnabled="true"
,它应该能够根据角色自动显示/隐藏菜单项。
This link会给出一个想法
答案 1 :(得分:1)
使用具有SecurityTrimmingEnabled =“true”的站点地图是一个很好的解决方案。
另外两个需要考虑的选择是:
移动代码以将菜单构建到母版页中。
创建基类(public class BasePage : System.Web.UI.Page
)并从该基类继承所有页面。将代码构建到基类中。