2012-11-25 102 views
4

如果用戶不在管理員角色中,我試圖隱藏菜單項中的項。這裏是我在我的網站主人後面的代碼中使用的代碼,但代碼沒有隱藏管理頁面,我試圖隱藏它。下面是母版頁的HTML標記:如何在ASP.Net中隱藏基於角色的菜單項

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" 
        IncludeStyleBlock="false" Orientation="Horizontal"> 
        <Items> 
         <asp:MenuItem NavigateUrl="~/Admin/Authors.aspx" Text="Admin" /> 
         <asp:MenuItem NavigateUrl="~/Users/KCA_Summary.aspx" Text="KCA Summary" /> 
         <asp:MenuItem NavigateUrl="~/Users/Details.aspx" Text="KCA Details" /> 

        </Items> 
       </asp:Menu> 

這裏被後面的代碼:

Protected Sub Page_Load(sender As Object, e As EventArgs) 
     If Not Roles.IsUserInRole("Admin") Then 
      Dim menuItems As MenuItemCollection = NavigationMenu.Items 
      Dim adminItem As New MenuItem() 
      For Each menuItem As MenuItem In menuItems 
       If menuItem.Text = "Admin" Then 
        adminItem = menuItem 
       End If 
      Next 
      menuItems.Remove(adminItem) 
     End If 
    End Sub 
+0

也許你在管理角色:)。該代碼適用於我。 – aquinas

+0

我已經從管理員角色中刪除了自己,對其進行測試,但仍無效。 – moe

+0

如果您使用的是Asp.net會員,您可以使用LoginView控件 – dansasu11

回答

1

也許最簡單的方法是使用配置有SecurityTrimmingEnabled = true的SiteMapProvider

鏈接的MSDN文章引用了很多將幫助您入門的「How To」文章。

+0

將嘗試。日Thnx – moe

相關問題