0

我有一个自定义菜单,它利用了标准的 asp.net 站点地图。它运行良好,但我的一些页面是由 URL 重写器动态生成的,因此它们不位于站点地图 XML 文件中。目前,我推出了一个自定义解决方案,该解决方案通过 CSS 类显示/隐藏菜单项,并以编程方式检查用户所在的角色。在我访问站点地图文件中不存在的动态页面之前,它可以正常工作。我已经尝试使用安全修剪在站点地图文件中使用“角色”属性,但它不起作用,因为我有一个自定义菜单。

有没有一种方法可以利用站点地图文件中的角色属性来显示/隐藏下面我的自定义控件的菜单项,即使某些页面不在站点地图中?我的菜单控件如下...

<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 (path) 来测试站点地图中的每个 URL - 如果用户有权访问路径(文件或文件夹),则此方法返回 true,否则返回 false。

于 2010-11-17T21:21:15.650 回答