SiteMapNode Clase

Definición

Representa un nodo en la estructura jerárquica del mapa del sitio, como la que describe la clase SiteMap y las clases que implementan la clase SiteMapProvider abstracta.

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
Herencia
SiteMapNode
Implementaciones

Ejemplos

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo crear una nueva colección de nodos de mapa de sitio y agregarle elementos. En el segundo ejemplo de código se muestra cómo cargar datos de mapa del sitio desde un archivo de texto.

En el ejemplo de código siguiente se muestra cómo usar el SiteMapNodeCollection constructor para crear una nueva SiteMapNodeCollection colección y, a continuación, agregarle elementos con el Add método .

// 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

En el SimpleTextSiteMapProvider ejemplo de código siguiente se muestra cómo analiza un archivo de texto que contiene datos de mapa del sitio en cadenas delimitadas por comas. Se agrega un nuevo SiteMapNode objeto a las colecciones de seguimiento internas de la clase para cada línea que se lee del archivo.

Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase SiteMapProvider.

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

Comentarios

Un SiteMapNode objeto representa una página de sitio web en una estructura de mapa de sitio. SiteMapNode La clase estática SiteMap carga los objetos en tiempo de ejecución mediante uno o varios proveedores de mapas de sitio para cargar datos de mapa de sitio desde el almacenamiento persistente en la memoria. SiteMapNode Los objetos se encapsulan mediante la SiteMapNodeItem clase para que los usen los controles de servidor web, como el SiteMapPath control .

La SiteMapNode clase incluye varias propiedades que se usan para describir una sola página en un sitio web, incluidas las propiedades que describen una página, como las Urlpropiedades , Titley Description . Mientras que la clase usa XmlSiteMapProvider la Url propiedad , que es el proveedor de mapa de sitio predeterminado para ASP.NET, como clave de búsqueda en las colecciones internas que el proveedor usa para realizar un seguimiento de los nodos, la SiteMapNode clase admite una propiedad básica Key que los proveedores de mapas de sitio pueden usar para realizar un seguimiento de los nodos. Además, los controles de navegación usan la Url propiedad para representar hipervínculos a páginas dentro de una estructura de navegación. La Title propiedad es un nombre descriptivo para , SiteMapNodesuele ser el mismo que el título HTML de un formulario web y los controles de navegación usan para representar etiquetas simples. Por último, hay disponible una NameValueCollection colección de atributos adicionales Attributes para proveedores de mapas de sitio que usan SiteMapNode objetos, pero requieren propiedades adicionales que no están disponibles en la clase base SiteMapNode .

Constructores

SiteMapNode(SiteMapProvider, String)

Inicializa una nueva instancia de la clase SiteMapNode, utilizando la key especificada para identificar la página que el nodo representa y el proveedor del mapa del sitio que administra el nodo.

SiteMapNode(SiteMapProvider, String, String)

Inicializa una nueva instancia de la clase SiteMapNode, utilizando la dirección URL especificada, una key para identificar la página que el nodo representa y el proveedor del mapa del sitio que administra el nodo.

SiteMapNode(SiteMapProvider, String, String, String)

Inicializa una nueva instancia de la clase SiteMapNode, utilizando la dirección URL especificada, una key para identificar la página que el nodo representa, un título y el proveedor del mapa del sitio que administra el nodo.

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

Inicializa una nueva instancia de la clase SiteMapNode, utilizando la dirección URL especificada, una key para identificar la página que el nodo representa, un título, una descripción y el proveedor del mapa del sitio que administra el nodo.

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

Inicializa una nueva instancia de la clase SiteMapNode utilizando el proveedor del mapa del sitio especificado que administra el nodo, la dirección URL, el título, la descripción, los roles, los atributos adicionales y las claves de recurso explícitas e implícitas para la adaptación.

Propiedades

Attributes

Obtiene o establece una colección de atributos adicionales más allá de las propiedades fuertemente tipadas definidas para la clase SiteMapNode.

ChildNodes

Obtiene o establece todos los nodos secundarios del objeto SiteMapNode actual del proveedor SiteMapProvider asociado.

Description

Obtiene o establece una descripción para la clase SiteMapNode.

HasChildNodes

Obtiene un valor que indica si el nodo SiteMapNode actual tiene nodos secundarios.

Item[String]

Obtiene o establece un atributo personalizado de la colección Attributes o una cadena de recurso basada en la clave especificada.

Key

Obtiene una cadena que representa una clave de búsqueda para un nodo del mapa del sitio.

NextSibling

Obtiene el nodo SiteMapNode siguiente situado en el mismo nivel jerárquico que el actual, de manera relativa con respecto a la propiedad ParentNode (si la hay).

ParentNode

Obtiene o establece el objeto SiteMapNode que es el nodo primario del actual.

PreviousSibling

Obtiene el objeto SiteMapNode anterior situado en el mismo nivel que el actual, de manera relativa con respecto al objeto ParentNode (si lo hay).

Provider

Obtiene el proveedor SiteMapProvider por el que se realiza el seguimiento del objeto SiteMapNode.

ReadOnly

Obtiene o establece un valor que indica si se puede modificar el nodo del mapa del sitio.

ResourceKey

Obtiene o establece la clave de recurso utilizada para adaptar SiteMapNode.

Roles

Obtiene o establece una colección de roles asociados al objeto SiteMapNode, que se utilizan durante la reducción de seguridad.

RootNode

Obtiene el nodo raíz del proveedor raíz en una jerarquía de proveedores del mapa del sitio. Si no existe ninguna jerarquía de proveedores, la propiedad RootNode obtiene el nodo raíz del proveedor actual.

Title

Obtiene o establece el título del objeto SiteMapNode.

Url

Obtiene o establece la dirección URL de la página que el objeto SiteMapNode representa.

Métodos

Clone()

Crea un nuevo nodo que es una copia del nodo actual.

Clone(Boolean)

Crea una nueva copia que es una copia del nodo actual y, opcionalmente, clona todos los nodos primarios y antecesores del nodo actual.

Equals(Object)

Obtiene un valor que indica si la clase SiteMapNode actual es idéntica al objeto especificado.

GetAllNodes()

Recupera una colección de sólo lectura de todos los objetos SiteMapNode que son descendientes del nodo llamador, sin tener en cuenta el grado de separación.

GetDataSourceView(SiteMapDataSource, String)

Recupera el objeto SiteMapDataSourceView que está asociado con el nodo actual.

GetExplicitResourceString(String, String, Boolean)

Recupera una cadena adaptada basándose en un atributo SiteMapNode que hay que adaptar, una cadena predeterminada que se devolverá si no se encuentra ningún recurso, y un valor booleano que indica si se deberá producir una excepción en caso de no encontrarse ningún recurso.

GetHashCode()

Devuelve el código hash del objeto SiteMapNode.

GetHierarchicalDataSourceView()

Recupera el objeto SiteMapHierarchicalDataSourceView que está asociado con el nodo actual.

GetImplicitResourceString(String)

Obtiene una cadena adaptada basándose en el nombre de atributo y en la propiedad ResourceKey que especifica el proveedor SiteMapProvider por el que se efectúa el seguimiento de SiteMapNode.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsAccessibleToUser(HttpContext)

Obtiene un valor que indica si el usuario puede ver el nodo del mapa del sitio especificado en el contexto indicado.

IsDescendantOf(SiteMapNode)

Obtiene un valor que indica si el nodo del mapa del sitio actual es un nodo secundario o un descendiente directo del nodo especificado.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Convierte el valor de esta instancia de la clase SiteMapNode en la representación de cadena equivalente.

Implementaciones de interfaz explícitas

ICloneable.Clone()

Crea un nuevo nodo que es una copia del nodo actual. Para obtener una descripción de este miembro, vea Clone().

IHierarchyData.GetChildren()

Recupera los elementos de datos de elementos secundarios jerárquicos del elemento actual. Para obtener una descripción de este miembro, vea GetChildren().

IHierarchyData.GetParent()

Recupera el elemento primario jerárquico del elemento actual. Para obtener una descripción de este miembro, vea GetParent().

IHierarchyData.HasChildren

Obtiene un valor que indica si el objeto SiteMapNode actual tiene nodos secundarios. Para obtener una descripción de este miembro, vea HasChildren.

IHierarchyData.Item

Obtiene el elemento de datos jerárquico. Para obtener una descripción de este miembro, vea Item.

IHierarchyData.Path

Obtiene la ruta de acceso del elemento de datos jerárquico. Para obtener una descripción de este miembro, vea Path.

IHierarchyData.Type

Obtiene una cadena que representa el nombre de tipo del elemento de datos jerárquico. Para obtener una descripción de este miembro, vea Type.

INavigateUIData.Description

Obtiene la propiedad Description del nodo del mapa del sitio. Para obtener una descripción de este miembro, vea Description.

INavigateUIData.Name

Obtiene la propiedad Title del nodo del mapa del sitio. Para obtener una descripción de este miembro, vea Name.

INavigateUIData.NavigateUrl

Obtiene la propiedad Url del nodo del mapa del sitio. Para obtener una descripción de este miembro, vea NavigateUrl.

INavigateUIData.Value

Obtiene la propiedad Title del nodo del mapa del sitio. Para obtener una descripción de este miembro, vea Value.

Se aplica a

Consulte también