SiteMap Classe

Definizione

La classe SiteMap è una rappresentazione in memoria della struttura di navigazione in un sito, specificata da uno o più provider della mappa del sito. La classe non può essere ereditata.

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
Ereditarietà
SiteMap

Esempio

In questa sezione sono riportati due esempi di codice. Il primo esempio di codice illustra come dichiarare un provider di mappe del sito in un file di Web.config. Il secondo esempio di codice illustra come usare un SiteMap oggetto.

L'esempio di codice seguente è una sezione di configurazione Web.config che illustra come un XmlSiteMapProvider oggetto viene dichiarato come oggetto predefinito SiteMapProvider .

<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 seguente viene illustrato come usare l'oggetto SiteMap accedendo ai membri statici per visualizzare informazioni sulle RootNode proprietà e CurrentNode . Confrontarlo con l'output SiteMapPath eseguito dal controllo.

<%@ 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 xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      <asp:SiteMapPath
          runat="server"
        ID="SiteMapPath1"
        ShowToolTips="false"/>
    </form>
  </body>
</html>
<%@ Page language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)

  ' 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) Then
      Dim childNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()

      While (childNodesEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(childNodesEnumerator.Current.ToString() & "<br />")
      End While

  End If
  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) Then
      Dim rootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
      While (rootNodesChildrenEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(rootNodesChildrenEnumerator.Current.ToString() & "<br />")
      End While
  End If

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:SiteMapPath
            runat="server"
          ID="SiteMapPath1"
          ShowToolTips="false"/>

    </form>
  </body>
</html>

Commenti

Le mappe del sito vengono usate insieme a SiteMapDataSource, SiteMapPathe altri controlli per eseguire il rendering di un'interfaccia di spostamento efficace per gli utenti per spostarsi in un sito Web. Un SiteMap oggetto è un componente dell'infrastruttura di spostamento del sito ASP.NET che fornisce l'accesso alle informazioni sulla mappa del sito di sola lettura per gli sviluppatori di pagine e controlli usando lo spostamento e SiteMapDataSource i controlli. Altri componenti dell'infrastruttura di spostamento del sito ASP.NET includono le SiteMapProvider classi e XmlSiteMapProvider , il file Web.sitemap e i vari controlli che funzionano con la SiteMap classe, ad esempio il controllo, per eseguire il SiteMapPath rendering di contenuti e menu.

L'oggetto SiteMap ha diverse funzioni:

  • Fornisce il nodo radice della gerarchia di navigazione del sito (può essere presente un solo nodo radice).

  • Identifica il provider di mappe del sito principale o predefinito.

  • Tiene traccia di tutti gli oggetti provider usati per creare .SiteMap

Fondamentalmente, l'oggetto SiteMap è un contenitore per una raccolta gerarchica di SiteMapNode oggetti. Tuttavia, l'oggetto SiteMap non mantiene le relazioni tra i nodi; invece, delega questo ai provider di mappe del sito. L'oggetto SiteMap funge da interfaccia per le informazioni di spostamento del sito (sotto forma di oggetti) mantenute da questi provider di SiteMapNode mappe del sito. Tiene traccia dei provider da cui può accedere ai dati di spostamento del sito ed espone la sua Providers raccolta. Un provider può archiviare le informazioni sulla mappa del sito in qualsiasi modo, purché si estende la SiteMapProvider classe astratta, la SiteMap classe può essere inizializzata correttamente da essa.

Il provider predefinito per la SiteMap classe è la XmlSiteMapProvider classe, che funziona con un file di configurazione XML, Web.sitemap. Tuttavia, è possibile scrivere il proprio SiteMapProvider oggetto e usarlo per inizializzare la mappa del sito per il sito. Per un esempio di provider di mappe del sito personalizzato, vedere SiteMapProvider.

Viene specificata una configurazione predefinita della mappa del sito che gestisce la configurazione di spostamento del sito. È possibile eseguire l'override di questa configurazione nel file Web.config, è consigliabile scegliere di scrivere il proprio provider di mappe del sito.

La SiteMap classe offre solo membri statici per le prestazioni e può essere accessibile in qualsiasi momento in un determinato sito da un controllo Web Form o server Web.

Proprietà

CurrentNode

Ottiene un controllo SiteMapNode che rappresenta la pagina attualmente richiesta.

Enabled

Ottiene un valore booleano che indica se un provider della mappa del sito è specificato nel file Web.config e se tale provider è attivato.

Provider

Ottiene l'oggetto SiteMapProvider predefinito per la mappa del sito corrente.

Providers

Ottiene una raccolta in sola lettura degli oggetti SiteMapProvider denominati disponibili per la classe SiteMap.

RootNode

Ottiene un oggetto SiteMapNode che rappresenta la pagina di primo livello della struttura di navigazione nel sito.

Eventi

SiteMapResolve

Si verifica quando viene effettuato l'accesso alla proprietà CurrentNode.

Si applica a

Vedi anche