Compartir a través de


SiteMap Clase

Definición

La clase SiteMap es una representación en memoria de la estructura de navegación de un sitio, proporcionada por uno o varios proveedores del mapa del sitio. Esta clase no puede heredarse.

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
Herencia
SiteMap

Ejemplos

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo declarar un proveedor de mapa de sitio en un archivo Web.config. En el segundo ejemplo de código se muestra cómo usar un SiteMap objeto .

El ejemplo de código siguiente es una sección de configuración de Web.config que muestra cómo se declara un XmlSiteMapProvider objeto como el objeto predeterminado SiteMapProvider .

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">  
  <providers>  
    <add name="MyXmlSiteMapProvider"  
      description="The site map provider that reads in the .sitemap XML files."  
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  
      siteMapFile="my.sitemap" />  
  </providers>  
</siteMap>  

En el ejemplo de código siguiente se muestra cómo usar el SiteMap objeto accediendo a sus miembros estáticos para mostrar información sobre las RootNode propiedades y CurrentNode . Compárelo con la salida representada por el SiteMapPath control .

<%@ Page language="c#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }

}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      <asp:SiteMapPath
          runat="server"
        ID="SiteMapPath1"
        ShowToolTips="false"/>
    </form>
  </body>
</html>
<%@ Page language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)

  ' Examine the CurrentNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.CurrentNode.Title & "<br />")
  Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

  ' What nodes are children of the CurrentNode?
  If (SiteMap.CurrentNode.HasChildNodes) Then
      Dim childNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()

      While (childNodesEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(childNodesEnumerator.Current.ToString() & "<br />")
      End While

  End If
  Response.Write("<hr />")

  ' Examine the RootNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.RootNode.Title & "<br />")
  Response.Write(SiteMap.RootNode.Url & "<br />")

  ' What nodes are children of the RootNode?
  If (SiteMap.RootNode.HasChildNodes) Then
      Dim rootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
      While (rootNodesChildrenEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(rootNodesChildrenEnumerator.Current.ToString() & "<br />")
      End While
  End If

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:SiteMapPath
            runat="server"
          ID="SiteMapPath1"
          ShowToolTips="false"/>

    </form>
  </body>
</html>

Comentarios

Los mapas de sitio se usan junto con los SiteMapDataSourcecontroles , SiteMapPathy otros para representar una interfaz de navegación eficaz para que los usuarios naveguen por un sitio web. Un SiteMap objeto es un componente de la infraestructura de navegación del sitio de ASP.NET que proporciona acceso a la información de mapa de sitio de solo lectura para los desarrolladores de páginas y controles mediante navegación y SiteMapDataSource controles. Otros componentes de la infraestructura de navegación del sitio de ASP.NET incluyen las SiteMapProvider clases y XmlSiteMapProvider , el archivo Web.sitemap y los distintos controles que funcionan con la SiteMap clase , como el SiteMapPath control , para representar contenido y menús.

SiteMap Tiene varias funciones:

  • Proporciona el nodo raíz de la jerarquía de navegación del sitio (solo puede haber un nodo raíz).

  • Identifica qué proveedor de mapa de sitio es la entidad de seguridad, o el proveedor predeterminado.

  • Realiza un seguimiento de todos los objetos de proveedor que se usan para crear .SiteMap

Fundamentalmente, SiteMap es un contenedor para una colección jerárquica de SiteMapNode objetos. Sin embargo, el SiteMap no mantiene las relaciones entre los nodos; en su lugar, lo delega a los proveedores de mapa del sitio. SiteMap actúa como una interfaz para la información de navegación del sitio (en forma de objetos) que estos proveedores de SiteMapNode mapas de sitio mantienen. Realiza un seguimiento de los proveedores desde los que puede acceder a los datos de navegación del sitio y expone su Providers colección. Un proveedor puede almacenar su información de mapa de sitio de cualquier manera, siempre y cuando extienda la SiteMapProvider clase abstracta, la SiteMap clase se puede inicializar correctamente desde ella.

El proveedor predeterminado de la SiteMap clase es la XmlSiteMapProvider clase , que funciona con un archivo de configuración XML, Web.sitemap. Sin embargo, puede escribir su propio SiteMapProvider objeto y usarlo para inicializar el mapa del sitio para el sitio. Para obtener un ejemplo de un proveedor de mapa de sitio personalizado, consulte SiteMapProvider.

Se especifica una configuración de mapa de sitio predeterminada que administra la configuración de navegación del sitio. Puede invalidar esta configuración en el archivo Web.config, si decide escribir su propio proveedor de mapa de sitio.

La SiteMap clase solo ofrece miembros estáticos para el rendimiento y se puede acceder a él en cualquier momento en un sitio determinado desde un formulario web o un control de servidor web.

Propiedades

CurrentNode

Obtiene un control SiteMapNode que representa la página actualmente solicitada.

Enabled

Obtiene un valor booleano que indica si se ha especificado un proveedor del mapa del sitio en el archivo Web.config y si está habilitado.

Provider

Obtiene el objeto SiteMapProvider predeterminado para el mapa del sitio actual.

Providers

Obtiene una colección de sólo lectura de objetos SiteMapProvider con nombre que están disponibles para la clase SiteMap.

RootNode

Obtiene un objeto SiteMapNode que representa la página de nivel superior de la estructura de navegación del sitio.

Eventos

SiteMapResolve

Se produce cuando se tiene acceso a la propiedad CurrentNode.

Se aplica a

Consulte también