SiteMapNode Classe

Definizione

Rappresenta un nodo nella struttura della mappa del sito gerarchica come quella descritta dalla classe SiteMap e dalle classi che implementano la classe SiteMapProvider astratta.Represents a node in the hierarchical site map structure such as that described by the SiteMap class and classes that implement the abstract SiteMapProvider class.

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

Esempi

In questa sezione sono riportati due esempi di codice.This section contains two code examples. Nel primo esempio di codice viene illustrato come creare una nuova raccolta di nodi della mappa del sito e aggiungervi elementi.The first code example demonstrates how to create a new site map node collection and add elements to it. Nel secondo esempio di codice viene illustrato come caricare i dati della mappa del sito da un file di testo.The second code example demonstrates how to load site map data from a text file.

Nell'esempio di codice seguente viene illustrato come utilizzare SiteMapNodeCollection il costruttore per creare una SiteMapNodeCollection nuova raccolta e quindi aggiungervi elementi con il Add metodo.The following code example demonstrates how to use the SiteMapNodeCollection constructor to create a new SiteMapNodeCollection collection, and then add elements to it with the Add method.

// 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 SimpleTextSiteMapProvider come analizza un file di testo che contiene i dati della mappa del sito in stringhe delimitate da virgole.The following code example demonstrates how the SimpleTextSiteMapProvider parses a text file that contains site map data in comma-delimited strings. Un nuovo SiteMapNode oggetto viene aggiunto alle raccolte di rilevamento interne della classe per ogni riga letta dal file.A new SiteMapNode object is added to the internal tracking collections of the class for each line that is read from the file.

Questo esempio di codice fa parte di un esempio più ampio fornito SiteMapProvider per la classe.This code example is part of a larger example provided for the SiteMapProvider class.

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.A SiteMapNode object represents a Web site page in a site map structure. SiteMapNodegli oggetti vengono caricati dalla classe SiteMap statica in fase di esecuzione usando uno o più provider della mappa del sito per caricare i dati della mappa del sito dall'archiviazione permanente in memoria.SiteMapNode objects are loaded by the static SiteMap class at run time using one or more site map providers to load site map data from persistent storage into memory. SiteMapNodegli oggetti vengono incapsulati dalla classe per l' SiteMapNodeItem utilizzo da parte dei controlli server Web, ad esempio il SiteMapPath controllo.SiteMapNode objects are wrapped by the SiteMapNodeItem class for use by Web server controls, such as the SiteMapPath control.

La SiteMapNode classe include diverse proprietà che vengono usate per descrivere una singola pagina in un sito Web, incluse le proprietà che descrivono una pagina, ad Urlesempio Titlele proprietà Description , e.The SiteMapNode class includes several properties that are used to describe a single page in a Web site, including properties that describe a page, such as the Url, Title, and Description properties. Mentre la Url proprietà viene utilizzata XmlSiteMapProvider dalla classe, che è il provider predefinito della mappa del sito per ASP.NET, come chiave di ricerca nelle raccolte interne utilizzate dal provider per tenere traccia dei nodi, SiteMapNode la classe supporta un' Key operazione di base Proprietà che può essere utilizzata dai provider della mappa del sito per tenere traccia dei nodi.Whereas the Url property is used by the XmlSiteMapProvider class, which is the default site map provider for ASP.NET, as a lookup key in the internal collections that the provider uses to track nodes, the SiteMapNode class supports a basic Key property that can be used by site map providers to track nodes. Inoltre, la Url proprietà viene utilizzata dai controlli di navigazione per eseguire il rendering dei collegamenti ipertestuali alle pagine all'interno di una struttura di navigazione.Additionally, the Url property is used by navigation controls to render hyperlinks to pages within a navigation structure. La Title proprietà è un nome descrittivo SiteMapNodeper l'oggetto, è spesso uguale al titolo HTML di un Web Form e viene usato dai controlli di navigazione per eseguire il rendering di etichette semplici.The Title property is a friendly name for the SiteMapNode, is often the same as the HTML title of a Web Form, and is used by navigation controls to render simple labels. Infine, una NameValueCollection raccolta di attributi Attributes aggiuntivi è disponibile per i provider della mappa del SiteMapNode sito che utilizzano oggetti, ma che richiedono proprietà aggiuntive che non sono SiteMapNode disponibili nella classe di base.Finally, a NameValueCollection collection of additional Attributes attributes is available to site map providers that use SiteMapNode objects, but require additional properties that are not available in the base SiteMapNode class.

Costruttori

SiteMapNode(SiteMapProvider, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'elemento key specificato per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.Initializes a new instance of the SiteMapNode class, using the specified key to identify the page that the node represents and the site map provider that manages the node.

SiteMapNode(SiteMapProvider, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo e il provider della mappa del sito che gestisce il nodo.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, and the site map provider that manages the node.

SiteMapNode(SiteMapProvider, String, String, String)

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo e il provider della mappa del sito che gestisce il nodo.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, a title, and the site map provider that manages the node.

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

Inizializza una nuova istanza della classe SiteMapNode usando l'URL specificato, un elemento key per identificare la pagina rappresentata dal nodo, un titolo con descrizione e il provider della mappa del sito che gestisce il nodo.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, a title and description, and the site map provider that manages the node.

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

Inizializza una nuova istanza della classe SiteMapNode usando 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.Initializes a new instance of the SiteMapNode class using the specified site map provider that manages the node, URL, title, description, roles, additional attributes, and explicit and implicit resource keys for localization.

Proprietà

Attributes

Ottiene o imposta un insieme di attributi aggiuntivi rispetto alle proprietà fortemente tipizzate definite nella classe SiteMapNode.Gets or sets a collection of additional attributes beyond the strongly typed properties that are defined for the SiteMapNode class.

ChildNodes

Ottiene o imposta tutti i nodi figlio dell'oggetto SiteMapNode corrente del provider SiteMapProvider associato.Gets or sets all the child nodes of the current SiteMapNode object from the associated SiteMapProvider provider.

Description

Ottiene o imposta una descrizione dell'elemento SiteMapNode.Gets or sets a description for the SiteMapNode.

HasChildNodes

Ottiene un valore che indica se l'elemento SiteMapNode corrente dispone di nodi figlio.Gets a value indicating whether the current SiteMapNode has any child nodes.

Item[String]

Ottiene o imposta un attributo personalizzato della raccolta Attributes o una stringa di risorsa basata sulla chiave specificata.Gets or sets a custom attribute from the Attributes collection or a resource string based on the specified key.

Key

Ottiene una stringa che rappresenta una chiave di ricerca di un nodo della mappa del sito.Gets a string representing a lookup key for a site map node.

NextSibling

Ottiene il nodo SiteMapNode successivo sullo stesso livello gerarchico del nodo corrente in relazione alla proprietà ParentNode, se disponibile.Gets the next SiteMapNode node on the same hierarchical level as the current one, relative to the ParentNode property (if one exists).

ParentNode

Ottiene o imposta l'oggetto SiteMapNode che è l'elemento padre del nodo corrente.Gets or sets the SiteMapNode object that is the parent of the current node.

PreviousSibling

Ottiene l'oggetto SiteMapNode precedente sullo stesso livello del nodo corrente in relazione all'oggetto ParentNode, se disponibile.Gets the previous SiteMapNode object on the same level as the current one, relative to the ParentNode object (if one exists).

Provider

Ottiene il provider SiteMapProvider che tiene traccia dell'oggetto SiteMapNode.Gets the SiteMapProvider provider that the SiteMapNode object is tracked by.

ReadOnly

Ottiene o imposta un valore che indica se è consentito modificare il nodo della mappa del sito.Gets or sets a value indicating whether the site map node can be modified.

ResourceKey

Ottiene o imposta la chiave di risorsa usata per localizzare l'elemento SiteMapNode.Gets or sets the resource key that is used to localize the SiteMapNode.

Roles

Ottiene o imposta una raccolta di ruoli associati all'oggetto SiteMapNode usato durante la limitazone per motivi di sicurezza.Gets or sets a collection of roles that are associated with the SiteMapNode object, used during security trimming.

RootNode

Ottiene il nodo radice del provider radice di una gerarchia di provider della mappa del sito.Gets the root node of the root provider in a site map provider hierarchy. Se non esiste alcuna gerarchia di provider, la proprietà RootNode ottiene il nodo radice del provider corrente.If no provider hierarchy exists, the RootNode property gets the root node of the current provider.

Title

Ottiene o imposta il titolo dell'oggetto SiteMapNode.Gets or sets the title of the SiteMapNode object.

Url

Ottiene o imposta l'URL della pagina rappresentata dall'oggetto SiteMapNode.Gets or sets the URL of the page that the SiteMapNode object represents.

Metodi

Clone()

Crea un nuovo nodo che è una copia del nodo corrente.Creates a new node that is a copy of the current node.

Clone(Boolean)

Crea una nuova copia del nodo corrente, con la possibilità di duplicare tutti i nodi padre e i nodi predecessore del nodo corrente.Creates a new copy that is a copy of the current node, optionally cloning all parent and ancestor nodes of the current node.

Equals(Object)

Ottiene un valore che indica se l'elemento SiteMapNode corrente è identico all'oggetto specificato.Gets a value indicating whether the current SiteMapNode is identical to the specified object.

GetAllNodes()

Recupera un insieme di sola lettura di tutti gli oggetti SiteMapNode discendenti del nodo chiamante, indipendentemente dal grado di separazione fra i nodi.Retrieves a read-only collection of all SiteMapNode objects that are descendants of the calling node, regardless of the degree of separation.

GetDataSourceView(SiteMapDataSource, String)

Recupera l'oggetto SiteMapDataSourceView associato al nodo corrente.Retrieves the SiteMapDataSourceView object that is associated with the current node.

GetExplicitResourceString(String, String, Boolean)

Recupera una stringa localizzata in base a un attributo SiteMapNode da localizzare, una stringa predefinita da restituire se non è disponibile alcuna risorsa e un valore booleano che indica se generare un'eccezione nel caso in cui non venga rilevata alcuna risorsa.Retrieves a localized string based on a SiteMapNode attribute to localize, a default string to return if no resource is found, and a Boolean value indicating whether to throw an exception if no resource is found.

GetHashCode()

Restituisce il codice hash dell'oggetto SiteMapNode.Returns the hash code of the SiteMapNode object.

GetHierarchicalDataSourceView()

Recupera l'oggetto SiteMapHierarchicalDataSourceView associato al nodo corrente.Retrieves the SiteMapHierarchicalDataSourceView object that is associated with the current node.

GetImplicitResourceString(String)

Ottiene una stringa localizzata in base al nome dell'attributo e alla proprietà ResourceKey specificata dall'elemento SiteMapProvider che tiene traccia dell'elemento SiteMapNode.Gets a localized string based on the attribute name and ResourceKey property that is specified by the SiteMapProvider by which the SiteMapNode is tracked.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(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 specifico.Gets a value indicating whether the specified site map node can be viewed by the user in the specified context.

IsDescendantOf(SiteMapNode)

Ottiene un valore che indica se il nodo della mappa del sito corrente è un nodo figlio o un discendente diretto del nodo specificato.Gets a value indicating whether the current site map node is a child or a direct descendant of the specified node.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Converte il valore dell'istanza corrente della classe SiteMapNode nella rappresentazione stringa equivalente.Converts the value of this instance of the SiteMapNode class to its equivalent string representation.

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Crea un nuovo nodo che è una copia del nodo corrente.Creates a new node that is a copy of the current node. Per una descrizione di questo membro, vedere Clone().For a description of this member, see Clone().

IHierarchyData.GetChildren()

Recupera gli elementi dati figlio gerarchici dell'elemento corrente.Retrieves the hierarchical children data items of the current item. Per una descrizione di questo membro, vedere GetChildren().For a description of this member, see GetChildren().

IHierarchyData.GetParent()

Recupera l'oggetto padre gerarchico dell'elemento corrente.Retrieves the hierarchical parent of the current item. Per una descrizione di questo membro, vedere GetParent().For a description of this member, see GetParent().

IHierarchyData.HasChildren

Ottiene un valore che indica se l'oggetto SiteMapNode corrente ha nodi figlio.Gets a value that indicates whether the current SiteMapNode object has any child nodes. Per una descrizione di questo membro, vedere HasChildren.For a description of this member, see HasChildren.

IHierarchyData.Item

Ottiene l'elemento di dati gerarchico.Gets the hierarchical data item. Per una descrizione di questo membro, vedere Item.For a description of this member, see Item.

IHierarchyData.Path

Ottiene il percorso dell'elemento di dati gerarchico.Gets the path of the hierarchical data item. Per una descrizione di questo membro, vedere Path.For a description of this member, see Path.

IHierarchyData.Type

Ottiene una stringa che rappresenta il nome del tipo dell'elemento di dati gerarchico.Gets a string that represents the type name of the hierarchical data item. Per una descrizione di questo membro, vedere Type.For a description of this member, see Type.

INavigateUIData.Description

Ottiene la proprietà Description del nodo della mappa del sito.Gets the Description property of the site map node. Per una descrizione di questo membro, vedere Description.For a description of this member, see Description.

INavigateUIData.Name

Ottiene la proprietà Title del nodo della mappa del sito.Gets the Title property of the site map node. Per una descrizione di questo membro, vedere Name.For a description of this member, see Name.

INavigateUIData.NavigateUrl

Ottiene la proprietà Url del nodo della mappa del sito.Gets the Url property of the site map node. Per una descrizione di questo membro, vedere NavigateUrl.For a description of this member, see NavigateUrl.

INavigateUIData.Value

Ottiene la proprietà Title del nodo della mappa del sito.Gets the Title property of the site map node. Per una descrizione di questo membro, vedere Value.For a description of this member, see Value.

Si applica a

Vedi anche