Classe SiteMap
Assembly: System.Web (in system.web.dll)
Le mappe del sito sono utilizzate unitamente a SiteMapDataSource, SiteMapPath e ad altri controlli per effettuare il rendering di un'interfaccia effettiva di spostamento per utenti perché si spostino in un sito Web. Un oggetto SiteMap è un componente dell'infrastruttura di spostamento nel sito ASP.NET che fornisce accesso alle informazioni in sola lettura sulla mappa del sito per gli sviluppatori di pagine e di controlli, utilizzando i controlli SiteMapDataSource e di spostamento. Altri componenti dell'infrastruttura includono le classi SiteMapProvider e XmlSiteMapProvider, il file Web.sitemap e vari controlli che utilizzano la classe SiteMap, ad esempio il controllo SiteMapPath, per effettuare il rendering dei contenuti e dei menu.
La classe SiteMap dispone di diverse funzioni:
-
Fornisce il nodo principale della gerarchia di spostamento nel sito (può esistere un unico nodo principale).
-
Identifica quale provider di mappa del sito è quello principale o predefinito.
-
Tiene traccia di tutti gli oggetti provider utilizzati per creare la classe SiteMap.
Sostanzialmente, la classe SiteMap è un contenitore di un insieme gerarchico di oggetti SiteMapNode. Tuttavia SiteMap non mantiene relazioni tra i nodi, piuttosto delega questa funzione ai provider della mappa del sito. La classe SiteMap svolge la funzione di interfaccia alle informazioni sullo spostamento nel sito (come oggetti SiteMapNode) contenute nei provider della mappa del sito. Tiene traccia dei provider dai quali è possibile accedere ai dati di spostamento nel sito ed espone il relativo insieme Providers. Un provider può memorizzare le relative informazioni sulla mappa del sito in qualsiasi modo purché estenda la classe astratta SiteMapProvider; da tale classe può essere inizializzata con esito positivo la classe SiteMap.
Il provider predefinito della classe SiteMap è la classe XmlSiteMapProvider che utilizza un file di configurazione XML ovvero Web.sitemap. È tuttavia possibile scrivere il proprio oggetto SiteMapProvider e utilizzarlo per inizializzare la mappa del sito per il proprio sito. Per un esempio di un provider della mappa del sito personalizzato, vedere SiteMapProvider.
Viene specificata una configurazione della mappa del sito predefinita che gestisce la configurazione di spostamento nel sito. È possibile sottoporre a override questa configurazione nel file Web.config, se si sceglie di scrivere il proprio provider della mappa del sito.
La classe SiteMap offre solo membri statici per le prestazioni e l'accesso è possibile in qualsiasi momento in un determinato sito mediante un Web Form o un controllo server Web.
In questa sezione sono contenuti due esempi di codice. Nel primo esempio di codice viene illustrato come dichiarare un provider della mappa del sito in un file Web.config. Nel secondo esempio di codice viene illustrato come utilizzare un oggetto SiteMap.
Nell'esempio di codice riportato di seguito viene indicata una sezione della configurazione del file Web.config che illustra come un oggetto XmlSiteMapProvider viene dichiarato come oggetto SiteMapProvider predefinito.
<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
<providers>
<add name="MyXmlSiteMapProvider"
description="The site map provider that reads in the .sitemap XML files."
type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="my.sitemap" />
</providers>
</siteMap>
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare l'oggetto SiteMap mediante l'accesso ai relativi membri statici, per visualizzare le informazioni sulle proprietà RootNode e CurrentNode . Confrontarlo all'output sul quale viene effettuato il rendering mediante il controllo SiteMapPath.
<%@ Page language="c#"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <Script RUNAT="server"> private void Page_Load(object sender, System.EventArgs e) { // Examine the CurrentNode, and navigate the SiteMap relative to it. Response.Write(SiteMap.CurrentNode.Title + "<BR>"); Response.Write("<FONT COLOR='red'>" + SiteMap.CurrentNode.Url + "</FONT><BR>"); // What nodes are children of the CurrentNode? if (SiteMap.CurrentNode.HasChildNodes) { IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator(); while (childNodesEnumerator.MoveNext()) { // Prints the Title of each node. Response.Write(childNodesEnumerator.Current.ToString() + "<BR>"); } } Response.Write("<HR>"); // Examine the RootNode, and navigate the SiteMap relative to it. Response.Write(SiteMap.RootNode.Title + "<BR>"); Response.Write(SiteMap.RootNode.Url + "<BR>"); // What nodes are children of the RootNode? if (SiteMap.RootNode.HasChildNodes) { IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator(); while (rootNodesChildrenEnumerator.MoveNext()) { // Prints the Title of each node. Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<BR>"); } } } </Script> <HTML> <body> <form id="Form1" runat="server"> <asp:SiteMapPath runat="server" ID="SiteMapPath1" ShowToolTips="false"/> </form> </body> </HTML>
- AspNetHostingPermission per operare in un ambiente host. Valore richiesta: LinkDemand; valore autorizzazione: Minimal.
- AspNetHostingPermission per operare in un ambiente host. Valore richiesta: InheritanceDemand; valore autorizzazione: Minimal.
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.