Von
Andreas Aschauer
27. October 2009 10:11
ASP.NET bietet eine tolle API zum Erstellen von SiteMaps und zum Generieren von Menüs aus einer Sitemap.
Eine Sitemap wird in ASP.NET definiert über eine Datei namens web.sitemap. In Visual Studio wird im Projekt Explorer mittels Rechtsklick –> Hinzufügen –> Neues Element einfach die entsprechende Vorlage gewählt.
Diese *.sitemap Datei ist eine XML Datei, welche mittels dem Element <sitemapNode> beliebige Hierarchien von Webseiten abbilden kann. Eine einfache Sitemap könnte folgendermassen definiert sein.
1: <?xml version="1.0" encoding="utf-8" ?>
2: <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
3: <siteMapNode url="~/" title="Home" description="Home">
4: <siteMapNode url="~/Home/News" title="News" description="Aktuelle Neuigkeiten" />
5: <siteMapNode url="~/Home/References" title="Referenzen" description="Referenzen"/>
6: <siteMapNode url="~/Home/Impressum" title="Impressum" description="Impressum">
7: <siteMapNode url="~/Home/Impressum/Kontakt" title="Kontakt" description="Kontakt"/>
8: </siteMapNode>
9: </siteMapNode>
10: </siteMap>
Hier sieht man, dass mit dem Element <sitemapNode> beliebig geschachtelt werden kann.
Bei der Entwicklung mit ASP.NET WebForms, stehen zur weiteren Verarbeitung der Sitemap fertige Controls zur Verfügung. Folgendes Markup zeigt die Verwendung von SiteMapPath (Breadcrumb), <asp:Menu> und <asp:Treeview>.
1: <asp:SiteMapPath ID="SiteMapPath1" runat="server" PathDirection="RootToCurrent" />
2:
3: <!-- Für asp:menu und asp:treeview wird eine SiteMapDatasource benötigt--!>
4: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
5:
6: <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1"/>
7:
8: <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/>
Ergebnis:
Dieses kleine Beispiel zeigt, wie einfach mit der ASP.NET Sitemap API Navigation in ASP.NET Webanwendungen eingebaut werden kann. Natürlich sind die Controls komplett mit eigenen Styles und Templates anpassbar.
Links:
MSDN: ASP.NET Websitenavigation