C# sitemapdatasource不调用OnDataBinding?

C# sitemapdatasource不调用OnDataBinding?,c#,asp.net,data-binding,sitemapprovider,C#,Asp.net,Data Binding,Sitemapprovider,我想使用OnDataBinding事件过滤web.sitemap中的条目,但它不会执行。我希望有功能,它允许我验证用户角色是否有权访问特定功能 我创建了一个包含函数列表和链接表的表来构建特权。我将允许管理员添加新角色,并为他们提供一组允许的功能,而不是使用IsInRole,因为IsInRole似乎不够灵活,无法满足我的需要 因此,我添加了以下内容: <asp:sitemapdatasource ID="SiteMapMenuSrc" runat="server" ShowStartingN

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

我创建了一个包含函数列表和链接表的表来构建特权。我将允许管理员添加新角色,并为他们提供一组允许的功能,而不是使用IsInRole,因为IsInRole似乎不够灵活,无法满足我的需要

因此,我添加了以下内容:

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

其中SiteMap是web.config条目:

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


似乎没有调用
main菜单\u数据绑定
。我没有找到任何合适的解释。我的代码有什么问题吗?

这是因为
SiteMapDatasource
只是一个数据源控件,它自己什么都不做

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

    <asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server" 
        Orientation="Horizontal" RenderingMode="Table" 
        StaticSubMenuIndent="16px">
        <StaticSelectedStyle Font-Bold="True" />
    </asp:Menu>


这是因为
SiteMapDatasource
只是一个数据源控件它自己什么都不做

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

    <asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server" 
        Orientation="Horizontal" RenderingMode="Table" 
        StaticSubMenuIndent="16px">
        <StaticSelectedStyle Font-Bold="True" />
    </asp:Menu>


不幸的是,添加此菜单后,我仍然无法从sitemapdatasource获取OnDataBinding。我应该使用菜单事件吗?我刚刚做了一个实验,你是对的,但是如果你调用你的页面:
this.DataBind()
在您的
页面加载
事件中,您的事件被触发。但是,通常的处理方法是处理数据绑定控件的事件,而不是数据源控件的事件。不幸的是,在添加此菜单后,我仍然无法从sitemapdatasource获取OnDataBinding。我应该使用菜单事件吗?我刚刚做了一个实验,你是对的,但是如果你调用你的页面:
this.DataBind()
在您的
页面加载
事件中,您的事件被触发。但是,通常的处理方法是处理数据绑定控件的事件,而不是来自数据源控件的事件。