SiteMap Clase

Definición

La SiteMap clase es una representación en memoria de la estructura de navegación de un sitio, que proporciona uno o varios proveedores de mapas de 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 siguiente ejemplo de código 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 objeto SiteMap es un componente de la infraestructura de navegación del sitio de ASP.NET que proporciona acceso a información de mapa de sitio de solo lectura para desarrolladores de páginas y controles de control mediante controles de navegación y SiteMapDataSource. Otros componentes de la infraestructura de navegación del sitio de ASP.NET incluyen las clases SiteMapProvider y XmlSiteMapProvider, el archivo Web.sitemap y los distintos controles que funcionan con la clase SiteMap, como el control SiteMapPath, 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, 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 mantiene estos proveedores de SiteMapNode mapas de sitio. 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, vea 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 ellos en cualquier momento en un sitio determinado desde un control de servidor web o formulario web.

Propiedades

Nombre Description
CurrentNode

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

Enabled

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

Provider

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

Providers

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

RootNode

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

Eventos

Nombre Description
SiteMapResolve

Se produce cuando se accede a la CurrentNode propiedad .

Se aplica a

Consulte también