sitemapdatasource не вызывает OnDataBinding?
-
12-12-2019 - |
Вопрос
Я хотел бы отфильтровать записи из 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
не называется.Подходящего объяснения я не нашел.Что не так с моим кодом?
Решение
Это потому что SiteMapDatasource
это просто контроль источника данных он ничего не делает сам по себе
Вам действительно нужно его использовать, например:
<asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server"
Orientation="Horizontal" RenderingMode="Table"
StaticSubMenuIndent="16px">
<StaticSelectedStyle Font-Bold="True" />
</asp:Menu>