我有一个自定义菜单,它利用了标准的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>
答案 0 :(得分:0)
您可以使用 UrlAuthorizationModule.CheckUrlAccessForPrincipal (路径)来测试站点地图中的每个网址 - 如果用户有权访问路径(文件或文件夹),则此方法返回true,否则返回false。