.net导航菜单操作

时间:2012-05-16 11:32:50

标签: c# asp.net .net master-pages

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

2 个答案:

答案 0 :(得分:1)

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

This link会给出一个想法

答案 1 :(得分:1)

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

另外两个需要考虑的选择是:

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

  • 创建基类(public class BasePage : System.Web.UI.Page)并从该基类继承所有页面。将代码构建到基类中。