sitemapdatasource ruft OnDataBinding nicht auf?
-
12-12-2019 - |
Frage
Ich möchte Einträge filtern aus web.sitemap
verwenden OnDataBinding
Ereignis, aber es wird nicht ausgeführt.Ich hätte gerne eine Funktionalität, mit der ich überprüfen kann, ob die Rolle des Benutzers Zugriff auf eine bestimmte Funktion hat.
Ich habe eine Tabelle mit einer Liste der Funktionen und einer Verknüpfungstabelle zum Erstellen von Berechtigungen erstellt.Ich werde dem Administrator erlauben, neue Rollen hinzuzufügen und ihnen eine Reihe zulässiger Funktionen zu geben, anstatt IsInRole zu verwenden, was für meine Anforderungen nicht flexibel genug erscheint.
Also habe ich Folgendes hinzugefügt:
<asp:sitemapdatasource ID="SiteMapMenuSrc" runat="server" ShowStartingNode="false" OnDataBinding="MainMenu_DataBinding" SiteMapProvider="SiteMap1"></asp:sitemapdatasource>
Wobei SiteMap der web.config-Eintrag ist:
<add name="SiteMap1" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap"/>
Es scheint, dass MainMenu_DataBinding
wird nicht aufgerufen.Ich habe keine passende Erklärung gefunden.Was stimmt mit meinem Code nicht?
Lösung
Das ist, weil SiteMapDatasource
ist nur ein Datenquellenkontrolle es macht nichts von alleine
Sie müssen es tatsächlich verwenden, zum Beispiel:
<asp:Menu ID="Menu1" DataSourceID="SiteMapMenuSrc" runat="server"
Orientation="Horizontal" RenderingMode="Table"
StaticSubMenuIndent="16px">
<StaticSelectedStyle Font-Bold="True" />
</asp:Menu>