如何在ASP.Net中隐藏基于角色的菜单项

时间:2012-11-25 04:28:25

标签: c# asp.net webforms

如果用户不在Admin角色中,我试图隐藏菜单项中的项目。这是我在我的站点主机后面的代码中使用的代码,但代码没有隐藏我试图隐藏它的管理员页面。以下是母版页的HTML标记:

 <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

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是使用配置为SecurityTrimmingEnabled = true的SiteMapProvider

链接的MSDN文章引用了很多可以帮助您入门的“操作方法”文章。