2012-05-16 48 views
0

我想根據用戶的角色爲不同的鏈接頁面提供菜單。 使用僅使用一個鏈接創建的asp:menu菜單的母版頁,然後基於用戶的角色模式添加鏈接。.net導航菜單操作

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」值,以便它們在整個站點中保持不變?

回答

1

使用Sitemap與SecurityTrimmingEnabled = 「true」 是一個很好的解決方案。其他

兩個備選方案要考慮的是:

  • 移動的代碼來構建菜單到母版頁。

  • 創建基類(public class BasePage : System.Web.UI.Page)並繼承該基類的所有頁面。把代碼建立到基類的菜單。

+0

感謝您的協助 –

1

我認爲你應該考慮使用帶有asp.net菜單的sitemap。如果您設置securityTrimmingEnabled="true",它應該能夠根據角色自動顯示/隱藏菜單項。

This link會給一個想法

+0

是的我在想,但我使用NetSqlAzMan進行角色管理,所以我不確定用上述方法實現是多麼容易。 –