Condividi tramite


SiteMapNode Classe

Definizione

Rappresenta un nodo nella struttura gerarchica della mappa del sito, ad esempio quella descritta dalla SiteMap classe e dalle classi che implementano la classe astratta SiteMapProvider .

public ref class SiteMapNode : ICloneable, System::Web::UI::IHierarchyData, System::Web::UI::INavigateUIData
public class SiteMapNode : ICloneable, System.Web.UI.IHierarchyData, System.Web.UI.INavigateUIData
type SiteMapNode = class
    interface ICloneable
    interface IHierarchyData
    interface INavigateUIData
Public Class SiteMapNode
Implements ICloneable, IHierarchyData, INavigateUIData
Ereditarietà
SiteMapNode
Implementazioni

Esempio

Questa sezione contiene due esempi di codice. Il primo esempio di codice illustra come creare una nuova raccolta di nodi della mappa del sito e aggiungervi elementi. Il secondo esempio di codice illustra come caricare i dati della mappa del sito da un file di testo.

Nell'esempio di codice seguente viene illustrato come usare il SiteMapNodeCollection costruttore per creare una nuova SiteMapNodeCollection raccolta e quindi aggiungere elementi al costruttore con il Add metodo .

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}
' The LoadSiteMapData() Function loads site navigation
' data from persistent storage into a DataTable.

Dim siteMapData As DataTable
siteMapData = LoadSiteMapData()

' Create a SiteMapNodeCollection.
Dim nodes As New SiteMapNodeCollection()

' Create a SiteMapNode and add it to the collection.
Dim tempNode As SiteMapNode
Dim row As DataRow
Dim index As Integer
index = 0

While (index < siteMapData.Rows.Count)

    row = siteMapData.Rows(index)

    ' Create a node based on the data in the DataRow.
    tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

    ' Add the node to the collection.
    nodes.Add(tempNode)
    index = index + 1
End While

Nell'esempio di codice seguente viene illustrato come SimpleTextSiteMapProvider analizza un file di testo contenente i dati della mappa del sito in stringhe delimitate da virgole. Viene aggiunto un nuovo SiteMapNode oggetto alle raccolte di rilevamento interne della classe per ogni riga letta dal file.

Questo esempio di codice fa parte di un esempio più ampio fornito per la SiteMapProvider classe .

protected virtual void LoadSiteMapFromStore()
{
  string pathToOpen;

  lock (this)
  {
    // If a root node exists, LoadSiteMapFromStore has already
    // been called, and the method can return.
    if (rootNode != null)
    {
      return;
    }
    else
    {
      pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

      if (File.Exists(pathToOpen))
      {
        // Open the file to read from.
        using (StreamReader sr = File.OpenText(pathToOpen))
        {

          // Clear the state of the collections and rootNode
          rootNode = null;
          siteMapNodes.Clear();
          childParentRelationship.Clear();

          // Parse the file and build the site map
          string s = "";
          string[] nodeValues = null;
          SiteMapNode temp = null;

          while ((s = sr.ReadLine()) != null)
          {

            // Build the various SiteMapNode objects and add
            // them to the ArrayList collections. The format used
            // is: URL,TITLE,DESCRIPTION,PARENTURL

            nodeValues = s.Split(',');

            temp = new SiteMapNode(this,
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                nodeValues[1],
                nodeValues[2]);

            // Is this a root node yet?
            if (null == rootNode &&
                string.IsNullOrEmpty(nodeValues[3]))
            {
              rootNode = temp;
            }

          // If not the root node, add the node to the various collections.
            else
            {
              siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
              // The parent node has already been added to the collection.
              SiteMapNode parentNode =
                       FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
              if (parentNode != null)
              {
                childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
              }
              else
              {
                throw new Exception("Parent node not found for current node.");
              }
            }
          }
        }
      }
      else
      {
        throw new Exception("File not found");
      }
    }
  }
  return;
}
  Protected Overridable Sub LoadSiteMapFromStore()
    Dim pathToOpen As String
    SyncLock Me
      ' If a root node exists, LoadSiteMapFromStore has already
      ' been called, and the method can return.
      If Not (aRootNode Is Nothing) Then
        Return
      Else
        pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
        If File.Exists(pathToOpen) Then
          ' Open the file to read from.
          Dim sr As StreamReader = File.OpenText(pathToOpen)
          Try

            ' Clear the state of the collections and aRootNode
            aRootNode = Nothing
            siteMapNodes.Clear()
            childParentRelationship.Clear()

            ' Parse the file and build the site map
            Dim s As String = ""
            Dim nodeValues As String() = Nothing
            Dim temp As SiteMapNode = Nothing

            Do
              s = sr.ReadLine()

              If Not s Is Nothing Then
                ' Build the various SiteMapNode objects and add
                ' them to the ArrayList collections. The format used
                ' is: URL,TITLE,DESCRIPTION,PARENTURL
                nodeValues = s.Split(","c)

                temp = New SiteMapNode(Me, _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    nodeValues(1), _
                    nodeValues(2))

                ' Is this a root node yet?
                If aRootNode Is Nothing AndAlso _
                  (nodeValues(3) Is Nothing OrElse _
                   nodeValues(3) = String.Empty) Then
                  aRootNode = temp

                  ' If not the root node, add the node to the various collections.
                Else

                  siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                  ' The parent node has already been added to the collection.
                  Dim parentNode As SiteMapNode = _
                      FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                  If Not (parentNode Is Nothing) Then
                    childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                  Else
                    Throw New Exception("Parent node not found for current node.")
                  End If
                End If
              End If
            Loop Until s Is Nothing
          Finally
            sr.Close()
          End Try
        Else
          Throw New Exception("File not found")
        End If
      End If
    End SyncLock
    Return
  End Sub
End Class

Commenti

Un SiteMapNode oggetto rappresenta una pagina del sito Web in una struttura della mappa del sito. SiteMapNode Gli oggetti vengono caricati dalla classe statica SiteMap in fase di esecuzione usando uno o più provider di mapping del sito per caricare i dati della mappa del sito dall'archiviazione permanente in memoria. SiteMapNode Gli oggetti vengono inclusi nella SiteMapNodeItem classe per l'uso da parte di controlli server Web, ad esempio il SiteMapPath controllo .

La SiteMapNode classe include diverse proprietà utilizzate per descrivere una singola pagina in un sito Web, incluse le proprietà che descrivono una pagina, ad esempio le Urlproprietà , Titlee Description . Mentre la Url proprietà viene utilizzata dalla XmlSiteMapProvider classe , che è il provider predefinito della mappa del sito per ASP.NET, come chiave di ricerca nelle raccolte interne usate dal provider per tenere traccia dei nodi, la SiteMapNode classe supporta una proprietà di base Key che può essere usata dai provider di mapping del sito per tenere traccia dei nodi. Inoltre, la proprietà viene utilizzata dai controlli di spostamento per eseguire il Url rendering dei collegamenti ipertestuali alle pagine all'interno di una struttura di navigazione. La Title proprietà è un nome descrittivo per , SiteMapNodeè spesso uguale al titolo HTML di un Web Form e viene utilizzata dai controlli di spostamento per eseguire il rendering di etichette semplici. Infine, una NameValueCollection raccolta di attributi aggiuntivi Attributes è disponibile per i provider della mappa del sito che usano SiteMapNode oggetti, ma richiedono proprietà aggiuntive che non sono disponibili nella classe base SiteMapNode .

Costruttori

Nome Descrizione
SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

Inizializza una nuova istanza della SiteMapNode classe utilizzando il provider della mappa del sito specificato che gestisce il nodo, l'URL, il titolo, la descrizione, i ruoli, gli attributi aggiuntivi e le chiavi di risorsa esplicite e implicite per la localizzazione.

SiteMapNode(SiteMapProvider, String, String, String, String)

Inizializza una nuova istanza della SiteMapNode classe utilizzando l'URL specificato, un key oggetto per identificare la pagina rappresentata dal nodo, un titolo e una descrizione e il provider della mappa del sito che gestisce il nodo.

SiteMapNode(SiteMapProvider, String, String, String)

Inizializza una nuova istanza della SiteMapNode classe utilizzando l'URL specificato, un key oggetto per identificare la pagina rappresentata dal nodo, un titolo e il provider della mappa del sito che gestisce il nodo.

SiteMapNode(SiteMapProvider, String, String)

Inizializza una nuova istanza della SiteMapNode classe utilizzando l'URL specificato, un key oggetto per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

SiteMapNode(SiteMapProvider, String)

Inizializza una nuova istanza della SiteMapNode classe utilizzando l'oggetto specificato key per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.

Proprietà

Nome Descrizione
Attributes

Ottiene o imposta una raccolta di attributi aggiuntivi oltre le proprietà fortemente tipizzate definite per la SiteMapNode classe .

ChildNodes

Ottiene o imposta tutti i nodi figlio dell'oggetto corrente SiteMapNode dal provider associato SiteMapProvider .

Description

Ottiene o imposta una descrizione per l'oggetto SiteMapNode.

HasChildNodes

Ottiene un valore che indica se l'oggetto corrente SiteMapNode dispone di nodi figlio.

Item[String]

Ottiene o imposta un attributo personalizzato dalla Attributes raccolta o da una stringa di risorsa in base alla chiave specificata.

Key

Ottiene una stringa che rappresenta una chiave di ricerca per un nodo della mappa del sito.

NextSibling

Ottiene il nodo successivo SiteMapNode sullo stesso livello gerarchico di quello corrente, rispetto alla ParentNode proprietà , se presente.

ParentNode

Ottiene o imposta l'oggetto SiteMapNode padre del nodo corrente.

PreviousSibling

Ottiene l'oggetto precedente SiteMapNode sullo stesso livello dell'oggetto corrente, relativo all'oggetto ParentNode , se presente.

Provider

Ottiene il SiteMapProvider provider da cui viene rilevato l'oggetto SiteMapNode .

ReadOnly

Ottiene o imposta un valore che indica se il nodo della mappa del sito può essere modificato.

ResourceKey

Ottiene o imposta la chiave di risorsa utilizzata per localizzare l'oggetto SiteMapNode.

Roles

Ottiene o imposta una raccolta di ruoli associati all'oggetto , utilizzato durante la SiteMapNode rimozione della sicurezza.

RootNode

Ottiene il nodo radice del provider radice in una gerarchia del provider della mappa del sito. Se non esiste alcuna gerarchia di provider, la RootNode proprietà ottiene il nodo radice del provider corrente.

Title

Ottiene o imposta il titolo dell'oggetto SiteMapNode .

Url

Ottiene o imposta l'URL della pagina rappresentata dall'oggetto SiteMapNode .

Metodi

Nome Descrizione
Clone()

Crea un nuovo nodo che rappresenta una copia del nodo corrente.

Clone(Boolean)

Crea una nuova copia che rappresenta una copia del nodo corrente, clonando facoltativamente tutti i nodi padre e predecessore del nodo corrente.

Equals(Object)

Ottiene un valore che indica se l'oggetto corrente SiteMapNode è identico all'oggetto specificato.

GetAllNodes()

Recupera una raccolta di sola lettura di tutti gli SiteMapNode oggetti discendenti del nodo chiamante, indipendentemente dal grado di separazione.

GetDataSourceView(SiteMapDataSource, String)

Recupera l'oggetto SiteMapDataSourceView associato al nodo corrente.

GetExplicitResourceString(String, String, Boolean)

Recupera una stringa localizzata in base a un SiteMapNode attributo per localizzare, una stringa predefinita da restituire se non viene trovata alcuna risorsa e un valore booleano che indica se generare un'eccezione se non viene trovata alcuna risorsa.

GetHashCode()

Restituisce il codice hash dell'oggetto SiteMapNode .

GetHierarchicalDataSourceView()

Recupera l'oggetto SiteMapHierarchicalDataSourceView associato al nodo corrente.

GetImplicitResourceString(String)

Ottiene una stringa localizzata in base al nome dell'attributo e ResourceKey alla proprietà specificata dall'oggetto da cui viene rilevato l'oggetto SiteMapProviderSiteMapNode .

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsAccessibleToUser(HttpContext)

Ottiene un valore che indica se il nodo della mappa del sito specificato può essere visualizzato dall'utente nel contesto specificato.

IsDescendantOf(SiteMapNode)

Ottiene un valore che indica se il nodo della mappa del sito corrente è figlio o discendente diretto del nodo specificato.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Converte il valore di questa istanza della SiteMapNode classe nella relativa rappresentazione di stringa equivalente.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
ICloneable.Clone()

Crea un nuovo nodo che rappresenta una copia del nodo corrente. Per una descrizione di questo membro, vedere Clone().

IHierarchyData.GetChildren()

Recupera gli elementi di dati figlio gerarchici dell'elemento corrente. Per una descrizione di questo membro, vedere GetChildren().

IHierarchyData.GetParent()

Recupera l'elemento padre gerarchico dell'elemento corrente. Per una descrizione di questo membro, vedere GetParent().

IHierarchyData.HasChildren

Ottiene un valore che indica se l'oggetto corrente SiteMapNode dispone di nodi figlio. Per una descrizione di questo membro, vedere HasChildren.

IHierarchyData.Item

Ottiene l'elemento di dati gerarchico. Per una descrizione di questo membro, vedere Item.

IHierarchyData.Path

Ottiene il percorso dell'elemento di dati gerarchico. Per una descrizione di questo membro, vedere Path.

IHierarchyData.Type

Ottiene una stringa che rappresenta il nome del tipo dell'elemento di dati gerarchico. Per una descrizione di questo membro, vedere Type.

INavigateUIData.Description

Ottiene la Description proprietà del nodo della mappa del sito. Per una descrizione di questo membro, vedere Description.

INavigateUIData.Name

Ottiene la Title proprietà del nodo della mappa del sito. Per una descrizione di questo membro, vedere Name.

INavigateUIData.NavigateUrl

Ottiene la Url proprietà del nodo della mappa del sito. Per una descrizione di questo membro, vedere NavigateUrl.

INavigateUIData.Value

Ottiene la Title proprietà del nodo della mappa del sito. Per una descrizione di questo membro, vedere Value.

Si applica a

Vedi anche