我想过滤来自 web.sitemap 使用 OnDataBinding 事件,但不执行。我想有功能,它允许我验证用户的角色是否有权访问特定功能。

我创建了带有函数列表和链接表的表来构建特权.我将允许管理员添加新的角色,并给他们一组允许的功能,而不是使用IsInRole,这似乎不够灵活,以满足我的需求。

所以,我添加了以下内容:

<asp:sitemapdatasource ID="SiteMapMenuSrc" runat="server" ShowStartingNode="false" OnDataBinding="MainMenu_DataBinding" SiteMapProvider="SiteMap1"></asp:sitemapdatasource>

其中站点地图是web。配置条目:

<add name="SiteMap1" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap"/>

看来,那 MainMenu_DataBinding 不叫。我还没有找到任何合适的解释。我的代码有什么问题?

有帮助吗?

解决方案

那是因为 SiteMapDatasource 只是一个 数据源控制 它自己什么也不做

你实际上必须使用它,例如:

    <asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server" 
        Orientation="Horizontal" RenderingMode="Table" 
        StaticSubMenuIndent="16px">
        <StaticSelectedStyle Font-Bold="True" />
    </asp:Menu>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top