Share via


SiteMapNode Constructores

Definición

Inicializa una nueva instancia de la clase SiteMapNode y la asocia con el objeto SiteMapProvider especificado.

Sobrecargas

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.

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key);
public SiteMapNode (System.Web.SiteMapProvider provider, string key);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String)

Parámetros

provider
SiteMapProvider

SiteMapProvider con que se asocia el nodo.

key
String

Clave de búsqueda específica del proveedor.

Excepciones

SiteMapProvider es null.

o bien

key es null.

Comentarios

La XmlSiteMapProvider clase , que es la implementación predeterminada SiteMapProvider del proveedor para ASP.NET, usa la SiteMapNode.Url propiedad como clave de búsqueda, si se proporciona una para el nodo (si no se proporciona una dirección URL, se genera un identificador de seguimiento para el nodo). Por lo tanto, cualquier SiteMapNode control que proporcione una dirección URL y que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

Se aplica a

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String)

Parámetros

provider
SiteMapProvider

SiteMapProvider con que se asocia el nodo.

key
String

Clave de búsqueda específica del proveedor.

url
String

Dirección URL de la página que el nodo representa dentro del sitio.

Excepciones

SiteMapProvider es null.

o bien

key es null.

Ejemplos

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

Comentarios

La XmlSiteMapProvider clase , que es la implementación predeterminada SiteMapProvider del proveedor para ASP.NET, usa la SiteMapNode.Url propiedad como clave de búsqueda, si se proporciona una para el nodo (si no se proporciona una dirección URL, se genera un identificador de seguimiento para el nodo). Por lo tanto, cualquier SiteMapNode objeto que proporcione una dirección URL y que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

Se aplica a

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String)

Parámetros

provider
SiteMapProvider

SiteMapProvider con que se asocia el nodo.

key
String

Clave de búsqueda específica del proveedor.

url
String

Dirección URL de la página que el nodo representa dentro del sitio.

title
String

Etiqueta para el nodo, que suelen mostrar los controles de navegación.

Excepciones

SiteMapProvider es null.

o bien

key es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el SiteMapNode constructor para crear una nueva instancia de la SiteMapNode clase . El nodo se inicializa con valores de una fila de base de datos de Microsoft Access.

Este ejemplo de código forma parte de un ejemplo más grande proporcionado para el BuildSiteMap método .

OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
   ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
if ( rootNodeReader->HasRows )
{
   rootNodeReader->Read();
   rootNodeId = rootNodeReader->GetInt32( 0 );
   
   // Create a SiteMapNode that references the current StaticSiteMapProvider.
   rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(), 
      rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
}
else
   return nullptr;
rootNodeReader->Close();

OleDbCommand rootNodeCommand =
    new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                     accessConnection);
OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

if(rootNodeReader.HasRows) {
    rootNodeReader.Read();
    rootNodeId = rootNodeReader.GetInt32(0);
    // Create a SiteMapNode that references the current StaticSiteMapProvider.
    rootNode   = new SiteMapNode(this,
                                 rootNodeId.ToString(),
                                 rootNodeReader.GetString(1),
                                 rootNodeReader.GetString(2));
}
else
{
    return null;
}

rootNodeReader.Close();
Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

If rootNodeReader.HasRows Then
    rootNodeReader.Read()
    rootNodeId = rootNodeReader.GetInt32(0)
    ' Create a SiteMapNode that references the current StaticSiteMapProvider.
    aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
Else
    Return Nothing
End If
rootNodeReader.Close()

Comentarios

La XmlSiteMapProvider clase , que es la implementación predeterminada SiteMapProvider del proveedor para ASP.NET, usa la SiteMapNode.Url propiedad como clave de búsqueda, si se proporciona una para el nodo (si no se proporciona una dirección URL, se genera un identificador de seguimiento para el nodo). Por lo tanto, cualquier SiteMapNode objeto que proporcione una dirección URL y que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

Si no se proporciona ninguna title , las llamadas a la Title propiedad devuelven el String.Empty campo.

Se aplica a

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String)

Parámetros

provider
SiteMapProvider

SiteMapProvider con que se asocia el nodo.

key
String

Clave de búsqueda específica del proveedor.

url
String

Dirección URL de la página que el nodo representa dentro del sitio.

title
String

Etiqueta para el nodo, que suelen mostrar los controles de navegación.

description
String

Descripción de la página que el nodo representa.

Excepciones

SiteMapProvider es null.

o bien

key es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el SiteMapNode constructor para crear un SiteMapNode objeto mediante el análisis de datos de un archivo de texto simple para crear un mapa de sitio en memoria.

Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la clase abstracta 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

La XmlSiteMapProvider clase , que es la implementación predeterminada SiteMapProvider del proveedor para ASP.NET, usa la SiteMapNode.Url propiedad como clave de búsqueda, si se proporciona una para el nodo (si no se proporciona una dirección URL, se genera un identificador de seguimiento para el nodo). Por lo tanto, cualquier SiteMapNode objeto que proporcione una dirección URL y que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

Si no title se proporciona o description , las llamadas a las Title propiedades o Description devuelven un String.Empty campo.

Consulte también

Se aplica a

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description, System::Collections::IList ^ roles, System::Collections::Specialized::NameValueCollection ^ attributes, System::Collections::Specialized::NameValueCollection ^ explicitResourceKeys, System::String ^ implicitResourceKey);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description, System.Collections.IList roles, System.Collections.Specialized.NameValueCollection attributes, System.Collections.Specialized.NameValueCollection explicitResourceKeys, string implicitResourceKey);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string * System.Collections.IList * System.Collections.Specialized.NameValueCollection * System.Collections.Specialized.NameValueCollection * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String, roles As IList, attributes As NameValueCollection, explicitResourceKeys As NameValueCollection, implicitResourceKey As String)

Parámetros

provider
SiteMapProvider

SiteMapProvider con que se asocia el nodo.

key
String

Clave de búsqueda específica del proveedor.

url
String

Dirección URL de la página que el nodo representa dentro del sitio.

title
String

Etiqueta para el nodo, que suelen mostrar los controles de navegación.

description
String

Descripción de la página que el nodo representa.

roles
IList

Lista IList de roles que pueden ver la página representada por el nodo SiteMapNode.

attributes
NameValueCollection

Colección NameValueCollection de atributos adicionales utilizados para inicializar el nodo SiteMapNode.

explicitResourceKeys
NameValueCollection

Colección NameValueCollection de claves de recurso explícitas utilizadas para la adaptación.

implicitResourceKey
String

Clave de recurso implícita utilizada para la adaptación.

Excepciones

SiteMapProvider es null.

o bien

key es null.

Comentarios

La XmlSiteMapProvider clase , que es la implementación predeterminada SiteMapProvider del proveedor para ASP.NET, usa la SiteMapNode.Url propiedad como clave de búsqueda, si se proporciona una para el nodo (si no se proporciona una dirección URL, se genera un identificador de seguimiento para el nodo). Por lo tanto, cualquier SiteMapNode objeto que proporcione una dirección URL y que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

La NameValueCollection colección de atributos con los SiteMapNode que se crea está disponible a través de la Attributes propiedad y facilita la aplicación de atributos adicionales a un nodo de mapa de sitio y amplía sus funcionalidades sin derivar una clase personalizada para hacerlo.

Proporcione una IList colección de roles para proporcionar un conjunto de roles que puedan ver el nodo cuando la SecurityTrimmingEnabled propiedad devuelve true. Para obtener más información, vea SecurityTrimmingEnabled.

El XmlSiteMapProvider proveedor usa la SiteMapNode.Url propiedad como clave de búsqueda. Por lo tanto, cualquier SiteMapNode que use XmlSiteMapProvider debe tener una dirección URL única dentro del ámbito del proveedor.

Si no title se proporciona o description , las llamadas a las Title propiedades o Description devuelven un String.Empty campo.

Para especificar mediante programación los recursos para la localización, establezca el valor de implicitResourceKey en un nombre único que se usará para identificar los recursos localizados para el nodo o establecer explicitResourceKeys en una NameValueCollection colección de pares donde name es la propiedad del nodo o el atributo personalizado para localizar y value contiene valores de localización para la propiedad del name/value nodo o el atributo personalizado. Los valores localizados se pueden establecer en los archivos .resx adecuados. Para obtener más información sobre cómo localizar , TitleDescriptiony las propiedades personalizadas de un SiteMapNode objeto, vea How to: Localize Site-Map Data. Para conocer los requisitos de sintaxis de la explicitResourceKeys colección, vea NameValueCollection.

Consulte también

Se aplica a