Compartir por


SiteMapNode Clase

Definición

Representa un nodo de la estructura jerárquica del mapa de sitio, como el descrito por la SiteMap clase y las clases que implementan la clase abstracta 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
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 de 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 ejemplo de código siguiente se muestra cómo analiza SimpleTextSiteMapProvider un archivo de texto que contiene datos de mapa de 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 forma parte de un ejemplo más grande proporcionado para la SiteMapProvider clase .

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 su uso por 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 la UrlXmlSiteMapProvider propiedad , que es el proveedor de mapa de sitio predeterminado para ASP.NET, como una 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 los proveedores de mapas de sitio que usan SiteMapNode objetos, pero requieren propiedades adicionales que no están disponibles en la clase base SiteMapNode .

Constructores

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

Inicializa una nueva instancia de la SiteMapNode clase mediante el proveedor de mapa de 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 recursos explícitas e implícitas para la localización.

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

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

SiteMapNode(SiteMapProvider, String, String, String)

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

SiteMapNode(SiteMapProvider, String, String)

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

SiteMapNode(SiteMapProvider, String)

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

Propiedades

Nombre Description
Attributes

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

ChildNodes

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

Description

Obtiene o establece una descripción de .SiteMapNode

HasChildNodes

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

Item[String]

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

Key

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

NextSibling

Obtiene el siguiente SiteMapNode nodo en el mismo nivel jerárquico que el actual, en relación con la ParentNode propiedad (si existe).

ParentNode

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

PreviousSibling

Obtiene el objeto anterior SiteMapNode en el mismo nivel que el actual, en relación con el ParentNode objeto (si existe).

Provider

Obtiene el proveedor al SiteMapProvider que realiza el seguimiento del SiteMapNode objeto.

ReadOnly

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

ResourceKey

Obtiene o establece la clave de recurso que se usa para localizar .SiteMapNode

Roles

Obtiene o establece una colección de roles que están asociados al SiteMapNode objeto , que se usan durante el recorte de seguridad.

RootNode

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

Title

Obtiene o establece el título del SiteMapNode objeto .

Url

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

Métodos

Nombre Description
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 el actual SiteMapNode es idéntico al objeto especificado.

GetAllNodes()

Recupera una colección de solo lectura de todos los SiteMapNode objetos que son descendientes del nodo que llama, independientemente del grado de separación.

GetDataSourceView(SiteMapDataSource, String)

Recupera el SiteMapDataSourceView objeto asociado al nodo actual.

GetExplicitResourceString(String, String, Boolean)

Recupera una cadena localizada basada en un SiteMapNode atributo para localizar, una cadena predeterminada que se devolverá si no se encuentra ningún recurso y un valor booleano que indica si se debe producir una excepción si no se encuentra ningún recurso.

GetHashCode()

Devuelve el código hash del SiteMapNode objeto .

GetHierarchicalDataSourceView()

Recupera el SiteMapHierarchicalDataSourceView objeto asociado al nodo actual.

GetImplicitResourceString(String)

Obtiene una cadena localizada basada en el nombre del atributo y ResourceKey la propiedad que especifica el objeto mediante el SiteMapProvider que se realiza el SiteMapNode seguimiento.

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 de mapa de sitio especificado en el contexto especificado.

IsDescendantOf(SiteMapNode)

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

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

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

Implementaciones de interfaz explícitas

Nombre Description
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 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 actual SiteMapNode 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 Description propiedad del nodo de mapa del sitio. Para obtener una descripción de este miembro, vea Description.

INavigateUIData.Name

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

INavigateUIData.NavigateUrl

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

INavigateUIData.Value

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

Se aplica a

Consulte también