0

我有一個自定義菜單,它利用標準的asp.net站點地圖。它工作的很好,但我的一些頁面是由URL重寫器動態生成的,所以它們不會位於站點地圖XML文件中。目前,我推出了一個自定義解決方案,通過CSS類顯示/隱藏菜單項,並對用戶所在角色進行編程檢查。直到我訪問站點地圖文件中不存在的動態頁面時,它才能正常工作。我已經嘗試過使用安全修整的站點地圖文件中的「角色」屬性,但它不起作用,因爲我有一個自定義菜單。顯示/隱藏基於角色/ Web.sitemap文件的自定義菜單項

有沒有一種方法可以利用站點地圖文件中的角色屬性在下面顯示/隱藏我的自定義控件的菜單項,即使某些頁面不在站點地圖中?我的菜單控制之下......

<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> 

回答

0

您可以使用UrlAuthorizationModule.CheckUrlAccessForPrincipal(路徑),以測試從站點地圖中的每個網址 - 如果用戶訪問路徑此方法返回true (文件或文件夾),否則爲false。