0

標準のasp.netサイトマップを利用するカスタムメニューがあります。うまく機能しますが、一部のページは URL リライターによって動的に生成されるため、サイトマップ XML ファイルには含まれません。現時点では、CSS クラスを介してメニュー項目を表示/非表示にするカスタム ソリューションと、ユーザーの役割をプログラムでチェックするカスタム ソリューションを作成しました。サイトマップ ファイルに存在しない動的ページにアクセスするまでは問題なく動作します。セキュリティ トリミングを使用してサイトマップ ファイルの "roles" 属性を試しましたが、カスタム メニューがあるため機能しません。

一部のページがサイトマップにない場合でも、サイトマップ ファイルのロール属性を利用して、以下のカスタム コントロールのメニュー項目を表示/非表示にする方法はありますか? 私のメニューコントロールは以下にあります...

<div class="menu">
<ul>
    <asp:Repeater ID="rpt" runat="server" DataSourceID="smdsMenuPrimary" 
        EnableViewState="False">
        <ItemTemplate>                
            <li class="<%#GetDisplayClass((SiteMapNode)Container.DataItem)%>"><a href='<%# ((SiteMapNode)Container.DataItem).Url %>'><%# ((SiteMapNode)Container.DataItem).Title %></a></li>                
        </ItemTemplate>
    </asp:Repeater>
</ul>

4

1 に答える 1

0

UrlAuthorizationModule.CheckUrlAccessForPrincipal (パス) を使用して、サイト マップから各 URL をテストできます。このメソッドは、ユーザーがパス (ファイルまたはフォルダー) にアクセスできる場合は true を返し、それ以外の場合は false を返します。

于 2010-11-17T21:21:15.650 に答える