4

ユーザーが管理者の役割を持っていない場合、メニュー項目から項目を非表示にしようとしています。これが私のサイトマスターのコードビハインドで使用しているコードですが、コードは私がそれを隠そうとしている管理ページを隠していません。マスターページの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
4

1 に答える 1

1

おそらく最も簡単な方法は、 =trueで構成されたSiteMapProviderを使用することです。SecurityTrimmingEnabled

リンクされたMSDNの記事は、始めるのに役立つ多くの「ハウツー」記事を参照しています。

于 2012-11-26T11:35:13.747 に答える