Das .NET-Framework bietet Steuerelemente, mit denen sich Navigationsfunktionen leicht in eine Website integrieren lassen. Der Artikel beschreibt Funktionsweise, Verwendung und Interaktionmöglichkeiten des SiteMap-Steuerelements.
Das Festlegen der logischen Struktur einer Website bildet den Ausgangspunkt für das Erstellen der Navigationselemente. ASP.NET 2.0 vereinfacht das Anfertigen solcher Steuerelemente mit dem Webserver-Steuerelement SiteMap sowie verwandten Navigations-Steuerelementen. In älteren Versionen von ASP.NET verschlang dieser einfache Prozess noch sehr viel Entwicklungszeit.
Sitemaps repräsentieren die logische Struktur
Einfache Webanwendungen gibt es heutzutage eigentlich kaum noch. Häufig bestehen sie aus zahlreichen Seiten und weisen eine komplexe Struktur auf.
Ein gutes Beispiel ist die ZDNet-Website: Sie besteht aus einer Homepage und verschiedenen Bereichen für Downloads, Foren, Shopping und vieles mehr. Die logische Struktur einer Website wird häufig als deren Sitemap bezeichnet. Sobald diese Struktur festgelegt ist, kann man sich an die Navigationsstruktur der Website machen.
Das XML-Format von ASP.NET-Sitemaps
Seit Version 2.0 ermöglicht ASP.NET das Festlegen einer Anwendungsstruktur über das Webserver-Steuerelement SiteMap. Zwar hat die Web-Community einen Sitemap[1]-Standard entwickelt, an dem auch Microsoft mitgewirkt hat, aber Microsoft selbst verwendet ein eigenes Format.
Die Sitemap wird in einer separaten Datei definiert. Das Standardformat für diese Datei ist XML. Doch eigene Sitemap-Provider können auch so entworfen werden, dass sie ein anderes Format verwenden.
In diesem Artikel wird das standardmäßige XML-Format verwendet. Die Sitemap-Datei heißt Web.sitemap. Bei einer einfachen Website sollte man diese Datei im Stammverzeichnis der Anwendung abspeichern. Natürlich kann eine Website neben mehreren web.config-Dateien auch mehrere Sitemap-Dateien verwenden. Diese Art von Datei lässt sich beispielsweise mit einem Texteditor erstellen. Wird Visual Studio verwendet, fügt man einer Webanwendung eine Sitemap hinzu, indem unter "Add New Item" die Option "Site Map" ausgewählt wird. Der folgende Code verdeutlicht das Format für eine Sitemap-Datei, wie sie häufig in Webprojekten zu finden ist:
Es fällt auf, dass die XML-Namespace-URL für eine ASP.NET-Sitemap Microsoft-spezifisch ist. Die Datei enthält das Wurzelelement siteMap, das die komplette Sitemap umfasst. Innerhalb dieses Wurzelknotens legen siteMapNode-Elemente die einzelnen Bereiche der Sitemap fest. Ein einzelner Sitemap-Knoten kann entweder keine oder auch mehrere untergeordnete Sitemap-Knoten enthalten. Diese können wiederum ebenfalls keine oder mehrere untergeordnete Sitemap-Knoten beinhalten, und so weiter. Jeder Sitemap-Knoten unterstützt die folgenden Attribute:
- url: Die Seite, auf die der Benutzer geleitet wird, wenn er das Element auswählt.
- title: Der angezeigte Text für das Element.
- description: Der angezeigte Tooltip-Text, wenn der Benutzer mit der Maus über das Element fährt.
- provider: Hiermit kann man den Sitemap-Provider für das Element angeben.
- resourceKey: Der zum Lokalisieren des Elements verwendete Resource-Key.
- roles: Eine Sammlung von Rollen, die mit dem Element verbunden sind. Das dient der Zugriffskontrolle mittels entsprechender Sicherheitsfunktionen (Security Trimming).
- securityTrimmingEnabled: Zeigt an, ob Security Trimming aktiviert ist.
- siteMapFile: In einer Anwendung können mehrere Sitemap-Dateien zum Einsatz kommen. Ein untergeordneter Knoten kann mit diesem Attribut auf eine andere Sitemap-Datei verweisen.
Normalerweise enthalten SiteMapNode-Elemente drei Attribute: url, title und description. Das folgende Listing ist eine Sitemap-Datei für eine Beispiel-Website mit nur drei Seiten:
Zugang über C#- und VB.NET-Code
Der System.Web-Namespace enthält die Klasse SiteMap, die dem Sitemap-Feature von ASP.NET entspricht. Sie ist eine speicherresidente Darstellung der Navigationsstruktur für eine Website. Die Klasse erlaubt den Zugriff auf die einzelnen Elemente innerhalb einer Sitemap. Die beiden wichtigsten und am häufigsten verwendeten Eigenschaften der Klasse sind CurrentNode und RootNote.
- CurrentNode: Gibt ein SiteMapNode-Objekt aus, das die aktuell angeforderte Seite darstellt. Diese Eigenschaft ermöglicht die Verwendung der aktuellen Seite als Ausgangspunkt. Beispielsweise lässt sich CurrentNode dazu verwenden, den Benutzer von der aktuellen Seite zur übergeordneten Seite zu leiten.
- RootNode: Gibt ein SiteMapNode-Objekt aus, das die oberste Seite der Navigationsstruktur der Website darstellt. Man kann die SiteMap-Klasse verwenden, um einen Besucher mithilfe dieser Eigenschaft einfach zur Hauptseite des Webauftritts zurückzuleiten.
Das folgende Beispiel in C# leitet einen Benutzer mithilfe der CurrentNode-Eigenschaft der SiteMap-Klasse auf die übergeordnete Seite der aktuellen Seite:
Response.Redirect(SiteMap.CurrentNode.ParentNode.Url);
Sowohl die CurrentNode- als auch die RootNode-Eigenschaft der SiteMap-Klasse geben eine Instanz der SiteMapNode-Klasse aus, welche die folgenden Eigenschaften und Methoden für die Navigation innerhalb des Sitemap-Baumes mitbringt.
- HasChildNodes: Zeigt an, ob der Knoten untergeordnete Elemente hat. HasChildNodes ist ein boolescher Wert.
- NextSibling: Gibt den nächsten Knoten im Sitemap-Baum aus, der sich auf derselben Ebene befindet wie der aktuelle Knoten.
- PreviousSibling: Gibt den vorhergehenden Knoten im Sitemap-Baum aus, der sich auf derselben Ebene befindet wie der aktuelle Knoten.
- RootNode: Gibt den Wurzelknoten der Sitemap aus.
- Title: Ermöglicht das Festlegen oder Auslesen des einem Knoten zugewiesenen Titels.
- Url: Erlaubt das Festlegen oder Auslesen der einem Knoten zugewiesenen URL.
- Description: Gestattet das Festlegen oder Auslesen der einem Knoten zugewiesenen Beschreibung.
Der folgende C#-Code einer ASP.NET-Seite durchläuft eine Sitemap und zeigt Titel und URL für jeden Knoten an, wenn die Seite geladen wird:
Der entsprechende VB.NET-Code sieht so aus:
Ausblick
Die Sitemap ist die Grundlage für die Verwendung der Navigations-Steuerelemente, die in ASP.NET 2.0 verfügbar sind. Die Sitemap wird als Datenquelle für die Navigations-Steuerelemente verwendet. Diese Navigations-Steuerelemente sind beispielsweise Menu, SiteMapPath und TreeView.
URLs in diesem Artikel:
[1] = http:/