2013-12-17 26 views
-1

這是導航菜單的樣子。用HTML,CSS完成並放置在母版頁中。具有權限的ASP菜單

現在的想法是根據用戶權限顯示/隱藏項目和子項目。

例如:用戶只有sub2-2和sub3-1等的許可。所以當他登錄時,他不應該在菜單中看到其他項目。 必要的表格和assigining角色完成。不知何故,我需要將它們應用到菜單中。是否有可能(使用ASP.Net,C#)

ITEM1 ITEM2 ITEM3  
      SUB2-1 SUB3-1  
      SUB2-2 SUB3-2 

望着ASP:菜單控制,但好像它不具有鋰項目「可見」屬性。 基本上我正在尋找類似於對象/控件/方法的東西,..我可以循環,檢查每個項目並使其可見或隱藏。請建議最佳方法。

回答

1

看一看這裏我的代碼...

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"> 
        <Items> 
         <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Change My Password"/> 
         <asp:MenuItem NavigateUrl="~/ResetPassword.aspx" Text="Reset My Password"/> 
         <asp:MenuItem Value="AdminOnly" NavigateUrl="~/UpcomingExpirations.aspx" Text="Upcoming Expirations"/> 
        </Items> 
       </asp:Menu> 

在後面的代碼...

protected void Page_Load(object sender, EventArgs e) 
     { 
     if (!IsUserAnAdmin(HttpContext.Current.User.Identity.Name)) 
      { 
      MenuItem removeitem = NavigationMenu.GetMenuItemByValue("AdminOnly"); 
      NavigationMenu.Items.Remove(removeitem); 
      } 
     } 

相反,它設置爲可見的=假的,我只是將其刪除,如果他們'不是管理員。

編輯... 只是意識到Menu.GetMenuItemByValue()是我寫的擴展方法,所以你沒有它!這裏是。這非常有用。

/// <summary> 
/// Returns the MenuItem in this Menu that has the specified Value (case sensitive) 
/// </summary> 
/// <param name="menu"></param> 
/// <param name="ItemValue"></param> 
/// <returns></returns> 
public static System.Web.UI.WebControls.MenuItem GetMenuItemByValue(this System.Web.UI.WebControls.Menu menu, string ItemValue) 
    { 
    foreach (System.Web.UI.WebControls.MenuItem item in menu.Items) 
     { 
     if (item.Value == ItemValue) 
      { 
      return item; 
      } 
     } 
    return null; 
    } 
+0

用戶將產生自己的個人主頁上,各有不同的角色。手前唯一知道的就是formid。每個表單或頁面都有一個ID。用戶可以將這些表單ID分配給配置文件。我怎麼能在這種情況下繼續。 – Ruby

3

內置菜單支持用戶角色並根據角色顯示/隱藏菜單項。

如果您需要更多的細粒度控制,你可以有自己的動態站點地圖提供這有可能做任何你想要的 - 顯示/隱藏的項目基於什麼,角色,用戶名,位置等

我已經那年前發表了博客。

http://www.wiktorzychla.com/2008/04/sitemapresolve-and-dynamic-site-map.html

+0

角色將工作,如果我們知道配置文件名稱。對?手前唯一知道的就是formid。每個表單或頁面都有一個ID。用戶可以將這些表單ID分配給配置文件。我怎麼能在這種情況下繼續。如果不正確,請多指導一下,如何繼續。 – Ruby