2012-11-25 3 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

Вероятно, самый простой способ заключается в использовании SiteMapProvider настроен SecurityTrimmingEnabled = True.

Связанная статья MSDN ссылается на множество статей «Как сделать», которые помогут вам начать работу.

+0

. Thnx – moe

Смежные вопросы