我想使用web.sitemap
事件过滤来自OnDataBinding
的条目,但它不会执行。我想拥有一些功能,它允许我验证用户的角色是否可以访问特定功能。
我创建了包含函数列表和链接表的表来构建特权。我将允许管理员添加新角色并为它们提供一组允许的功能,而不是使用看起来不够灵活的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"/>
似乎没有调用MainMenu_DataBinding
。我没有找到任何合适的解释。我的代码出了什么问题?
答案 0 :(得分:1)
那是因为SiteMapDatasource
只是一个数据源控件,它本身什么都不做
你实际上必须使用它,例如:
<asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server"
Orientation="Horizontal" RenderingMode="Table"
StaticSubMenuIndent="16px">
<StaticSelectedStyle Font-Bold="True" />
</asp:Menu>