SiteMap Classe

Definição

A classe SiteMap é uma representação na memória da estrutura de navegação para um site, fornecida por um ou mais provedores de mapa de site. Essa classe não pode ser herdada.

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
Herança
SiteMap

Exemplos

Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como declarar um provedor de mapa de site em um arquivo Web.config. O segundo exemplo de código demonstra como usar um SiteMap objeto.

O exemplo de código a seguir é uma seção de configuração Web.config que demonstra como um XmlSiteMapProvider objeto é declarado como o objeto padrão 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>  

O exemplo de código a seguir demonstra como usar o SiteMap objeto acessando seus membros estáticos para exibir informações sobre o e CurrentNode as RootNode propriedades. Compare-o com a saída renderizada pelo SiteMapPath controle.

<%@ 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>

Comentários

Os mapas de site são usados em conjunto com o SiteMapDataSource, SiteMapPathe outros controles para renderizar uma interface de navegação eficaz para que os usuários naveguem por um site. Um SiteMap objeto é um componente da infraestrutura de navegação do site ASP.NET que fornece acesso a informações de mapa de site somente leitura para desenvolvedores de página e controle usando navegação e SiteMapDataSource controles. Outros componentes da infraestrutura de navegação do site ASP.NET incluem as classes e XmlSiteMapProvider o SiteMapProvider arquivo Web.sitemap e os vários controles que funcionam com a SiteMap classe, como o SiteMapPath controle, para renderizar conteúdo e menus.

O SiteMap tem várias funções:

  • Ele fornece o nó raiz da hierarquia de navegação do site (pode haver apenas um nó raiz).

  • Ele identifica qual provedor de mapa de site é o provedor principal ou padrão.

  • Ele mantém o controle de todos os objetos do provedor que são usados para criar o SiteMap.

Fundamentalmente, é SiteMap um contêiner para uma coleção hierárquica de SiteMapNode objetos. No entanto, o SiteMap não mantém as relações entre os nós; em vez disso, ele delega isso aos provedores de mapa de site. O SiteMap atua como uma interface para as informações de navegação do site (na forma de SiteMapNode objetos) que são mantidas por esses provedores de mapa de site. Ele controla os provedores dos quais pode acessar dados de navegação do site e expõe sua Providers coleção. Um provedor pode armazenar suas informações de mapa de site de qualquer maneira - desde que estenda a SiteMapProvider classe abstrata, a SiteMap classe pode ser inicializada com êxito a partir dela.

O provedor padrão para a SiteMap classe é a XmlSiteMapProvider classe, que funciona com um arquivo de configuração XML, Web.sitemap. No entanto, você pode escrever seu próprio SiteMapProvider objeto e usá-lo para inicializar o mapa do site para seu site. Para obter um exemplo de um provedor de mapa de site personalizado, consulte SiteMapProvider.

Uma configuração de mapa de site padrão é especificada que gerencia a configuração de navegação do site. Você pode substituir essa configuração no arquivo Web.config, caso opte por escrever seu próprio provedor de mapa de site.

A SiteMap classe oferece apenas membros estáticos para desempenho e pode ser acessada a qualquer momento em um determinado site de um formulário web ou controle de servidor Web.

Propriedades

CurrentNode

Obtém um controle SiteMapNode que representa a página atualmente solicitada.

Enabled

Obtém um valor booliano que indica se um provedor de mapa de site é especificado no arquivo Web.config e se o provedor de mapa de site está habilitado.

Provider

Obtém o objeto SiteMapProvider padrão para o mapa de site atual.

Providers

Obtém uma coleção somente leitura dos objetos SiteMapProvider nomeados que estão disponíveis para a classe SiteMap.

RootNode

Obtém um objeto SiteMapNode que representa a página de nível superior da estrutura de navegação do site.

Eventos

SiteMapResolve

Ocorre quando a propriedade CurrentNode é acessada.

Aplica-se a

Confira também