Gewusst wie: Filtern der von SiteMapDataSource-Webserversteuerelementen abgerufenen Knoten
Aktualisiert: November 2007
Das SiteMapDataSource-Steuerelement ruft Siteübersichtsdaten von einem Siteübersichtsanbieter ab, z. B. von XmlSiteMapProvider, dem Standardsiteübersichtsanbieter für ASP.NET. Sie können das SiteMapDataSource-Steuerelement zum Zurückgeben der gesamten Siteübersichtsknoten oder einer Teilmenge der Knoten konfigurieren. Dies ist dann nützlich, wenn mehr als eine Navigationsstruktur auf einer Seite angezeigt wird und jede dieser Strukturen einen anderen Bereich der Siteübersicht anzeigt. Ebenso nützlich ist diese Funktion bei der Verteilung von Navigationselementen für Seiten auf verschiedene Hauptseiten der gesamten Site, wenn jede Hauptseite einen anderen Teil der gesamten Siteübersicht anzeigt.
Um diese Sitenavigationssteuerelemente zu verwenden, müssen Sie die Struktur der Site in der Datei Web.sitemap speichern und die in Ihrer Siteübersicht aufgeführten ASPX-Dateien erstellen.
So erstellen Sie die Datei Web.sitemap
Erstellen Sie eine neue Datei im Stammverzeichnis Ihrer Website. Nennen Sie diese Datei Web.sitemap, und fügen Sie den folgenden Code in die Datei ein:
<?xml version="1.0" encoding="utf-8" ?> <siteMap> </siteMap>
Erstellen Sie ein Wurzel-siteMapNode-Element als untergeordnetes Element des siteMap-Elements, und definieren Sie die folgenden Attribute:
title Weisen Sie dem Siteübersichtsknoten einen Titel zu. Dieser Titel wird als Hyperlinktext für die Webseite angezeigt.
url Weisen Sie einen URL für die Webseite zu. Sie können einen voll qualifizierten URL oder einen relativen URL wie zum Beispiel ~/Default.aspx verwenden. Das Tildezeichen (~) wird verwendet, um das Stammverzeichnis der Anwendung anzugeben. Zu einem späteren Zeitpunkt dieser Prozedur müssen Sie eine Webseite zu jedem URL erstellen, der in der Siteübersicht enthalten ist, da die Anwendung nicht funktioniert, wenn Sie einen nicht existierenden URL auflisten oder einen URL doppelt auflisten. Sie müssen dem Attribut keinen Wert zuweisen. Legen Sie es aber in diesem Beispiel auf eine ASPX-Datei fest, die Sie bearbeiten können.
Hinweis: Jede Siteübersicht kann nur ein Wurzel-siteMapNode-Element enthalten. Es können jedoch zu dieser Wurzel beliebig viele untergeordnete siteMapNode-Elemente enthalten sein.
Erstellen Sie ein siteMapNode-Element als untergeordnetes Element des Wurzel-siteMapNode-Elements. Legen Sie die gleichen Attribute wie im vorigen Schritt fest.
Erstellen Sie ein siteMapNode-Element als untergeordnetes Element des vorherigen siteMapNode-Elements. Legen Sie die gleichen Attribute wie im vorigen Schritt fest. In diesem Beispiel muss die Siteübersicht über drei Ebenen von siteMapNode-Elementen verfügen.
Die Datei Web.sitemap sieht ähnlich wie das folgende Beispiel aus:
<?xml version="1.0" encoding="utf-8" ?> <siteMap> <siteMapNode title="Home" url="~/Default.aspx" roles="*"> <siteMapNode title="Services" url="~/Services.aspx " > <siteMapNode title="Training" url="~/Training.aspx" /> </siteMapNode> <siteMapNode title="Products" url="" /> </siteMapNode> </siteMap>
Speichern und schließen Sie die Datei Web.sitemap.
So fügen Sie Sitenavigation zu einer Webseite hinzu
Erstellen Sie eine .aspx-Seite für jede Datei, die in den url-Attributen der Datei Web.sitemap aufgelistet ist. Ersetzen Sie den Code in allen ASPX-Dateien durch das Folgende, um die Siteübersicht in verschiedenen Steuerelementen anzuzeigen, die für die Anzeige der Siteübersichtsdaten zuständig sind. Wenn eine ASPX-Datei nicht in der Siteübersicht aufgeführt ist, kann sie kein Sitenavigationssteuerelement anzeigen.
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script > </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" > <title>Simple Navigation Controls</title> </head> <body> <form id="form1" > <div> <h2>Using SiteMapPath</h2> <asp:SiteMapPath ID="SiteMapPath1" Runat="server"> </asp:SiteMapPath> <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" /> <h2>Using TreeView</h2> <asp:TreeView ID="TreeView1" Runat="Server" DataSourceID="SiteMapDataSource1"> </asp:TreeView> <h2>Using Menu</h2> <asp:Menu ID="Menu2" Runat="server" DataSourceID="SiteMapDataSource1"> </asp:Menu> <h2>Using a Horizontal Menu</h2> <asp:Menu ID="Menu1" Runat="server" DataSourceID="SiteMapDataSource1" Orientation="Horizontal" StaticDisplayLevels="2" > </asp:Menu> </div> </form> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script > </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head > <title>Simple Navigation Controls</title> </head> <body> <form id="form1" > <div> <h2>Using SiteMapPath</h2> <asp:SiteMapPath ID="SiteMapPath1" Runat="server"> </asp:SiteMapPath> <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" /> <h2>Using TreeView</h2> <asp:TreeView ID="TreeView1" Runat="Server" DataSourceID="SiteMapDataSource1"> </asp:TreeView> <h2>Using Menu</h2> <asp:Menu ID="Menu2" Runat="server" DataSourceID="SiteMapDataSource1"> </asp:Menu> <h2>Using a Horizontal Menu</h2> <asp:Menu ID="Menu1" Runat="server" DataSourceID="SiteMapDataSource1" Orientation="Horizontal" StaticDisplayLevels="2" > </asp:Menu> </div> </form> </body> </html>
Speichern Sie die Dateien.
So ändern Sie den an das Navigationssteuerelement zurückgegebenen Startknoten
Suchen Sie in der ASPX-Seite, die in Ihrer Siteübersicht aus drei Ebenen besteht, das SiteMapDataSource-Steuerelement. Die zugehörige Codezeile könnte folgendermaßen aussehen:
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" />
Ändern Sie die oben erwähnte Codezeile in Folgendes:
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" StartingNodeUrl="~/Services.aspx" />
Speichern Sie die Datei, und öffnen Sie sie in einem Browser.
Die Navigationsstruktur auf der Seite Training.aspx unterscheidet sich von der Navigationsstruktur auf den anderen beiden Seiten. Die Strukturen beginnen beim zweiten Knoten. Das SiteMapPath-Steuerelement wird davon nicht beeinflusst, da es die Siteübersichtsdaten direkt vom Anbieter bezieht und daher kein SiteMapDataSource-Steuerelement benötigt.
Folgende weitere Optionen stehen zur Verfügung, um den Startknoten zu ändern:
- Durch Festlegen der StartFromCurrentNode-Eigenschaft auf true wird die Siteübersichtsstruktur beginnend mit dem Knoten der aktuellen Seite abgerufen.
Durch Festlegen der StartingNodeOffset-Eigenschaft auf 2 wird die Siteübersichtsstruktur beginnend zwei Knoten unterhalb des Wurzelknotens und dem Pfad zur aktuellen Seite folgend abgerufen.
So blenden Sie den Startknoten aus
Suchen Sie in der ASPX-Seite, die in Ihrer Siteübersicht aus drei Ebenen besteht, das SiteMapDataSource-Steuerelement. Die zugehörige Codezeile könnte folgendermaßen aussehen:
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" />
Ändern Sie die oben erwähnte Codezeile in Folgendes:
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" ShowStartingNode="~/Services.aspx" />
Speichern Sie die Datei, und öffnen Sie sie in einem Browser.
Die Navigationsstruktur auf dieser Seite unterscheidet sich von der Navigationsstruktur auf den anderen beiden Seiten. Das Ergebnis unterscheidet sich von den Ergebnissen, die durch Festlegen der StartingNodeOffset-Eigenschaft auf 1 oder durch Festlegen der StartingNodeUrl-Eigenschaft auf ~/Services.aspx erreicht werden, da die Auflistung von Siteübersichtsknoten nicht auf eine Teilstruktur der gesamten Siteübersicht beschränkt ist, wodurch auch der Produktknoten sichtbar ist.
Hinweis: Sie können auch die StartingNodeOffset-Eigenschaft auf eine negative Zahl festlegen, wenn sich der Startknoten auf einer Ebene unterhalb des Wurzelknotens der Siteübersicht befindet. Dies ist nützlich, wenn die StartFromCurrentNode-Eigenschaft auf true festgelegt ist und Sie die Siteübersicht beginnend bei jenem Knoten anzeigen möchten, der dem aktuellen Knoten übergeordnet ist.
Siehe auch
Aufgaben
Gewusst wie: Anpassen der Darstellung von SiteMapPath-Webserversteuerelementen
Konzepte
Implementieren von ASP.NET-Siteübersichtsanbietern
Einschränken der ASP.NET-Siteübersicht aus Sicherheitsgründen
Sichern der ASP.NET-Sitenavigation