0

我正在尝试根据用户的角色创建一个包含不同链接页面的菜单。使用带有 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值,以便它们在整个站点中持久存在?

4

2 回答 2

1

使用 SecurityTrimmingEnabled = "true" 的站点地图是一个很好的解决方案。

需要考虑的另外两个替代方案是:

  • 移动代码以将菜单构建到母版页中。

  • 创建一个基类 ( public class BasePage : System.Web.UI.Page) 并从该基类继承所有页面。将构建菜单的代码放入基类中。

于 2012-05-16T11:59:40.543 回答
1

我认为您应该考虑使用sitemapasp.net 菜单。如果您设置securityTrimmingEnabled="true"它应该能够根据角色自动显示/隐藏菜单项。

这个链接会给出一个想法

于 2012-05-16T11:52:07.233 回答