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。