Como: configurar Multiple Site Maps and Site Map Providers

Por padrão, a navegação em um site ASP.NET funciona com um arquivo XML que é denominado Web.sitemap que descreve sua hierarquia do seu site da Web.No entanto, pode ser conveniente usar mais de um arquivo de mapa de site ou provedor de mapa de site para descrever a estrutura de navegação de um site Web inteiro.

Por exemplo, você poderia ter um mapa do site principal que referencia um mapa do site filho.O mapa do site principal pode ser o seguinte:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode  title="Home Page"  description="">
    <siteMapNode title="First Level 1"  description="" />
    <siteMapNode  title="First Level 2" description="">
      <siteMapNode  title="Second Level 1" description=""/>
      <siteMapNode  title="Second Level 2" description=""/>
    </siteMapNode>
    <siteMapNode siteMapFile="child.sitemap" />
  </siteMapNode>
</siteMap>

O mapa filho pode ser o seguinte:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode  title="Child First Level 1"  description="">
    <siteMapNode title="Child Second Level 1"  description="" />
    <siteMapNode  title="Child Second Level 2"  description="" />
    <siteMapNode  title=""  description="" />
  </siteMapNode>
</siteMap>

O menu resultante desses dois mapas de site irá aparecer da seguinte maneira:

Home Page
  First Level 1
  First Level 2
    Second Level 1
    Second Level 2
  Child First Level 1
    Child Second Level 1
    Child Second Level 2

Para configurar vários mapas de site para um único site, você inicia com um mapa do site na raiz do aplicativo.Configure o provedor de raiz como o provedor de mapa de site padrão no arquivo web.config.Em seguida, vincule a mapas de site filho ou provedores referenciando-os em um objeto SiteMapNode.

Para vincular a um arquivo de mapa de site filho a partir de um mapa de site pai

  • No mapa de site pai, crie um SiteMapNode na localidade da estrutura de navegação onde você deseja que o mapa de site filho seja exibido.

    Por exemplo, se você estiver usando a classe padrão XmlSiteMapProvider, adicione o seguinte SiteMapNode no local apropriado no arquivo Web.sitemap.

    <siteMapNode siteMapFile="MySiteMap.sitemap" />
    

    O atributo siteMapFile pode ter um dos seguintes formatos:

    • Um referência relativa ao aplicativo, como ~/MySiteMap.sitemap.

    • Um caminho virtual, como /Customers/MySiteMap.sitemap.

    • Uma referência de caminho que é relativa à localidade do arquivo de mapa de site atual, como Guests/MySiteMap.sitemap.

      Observação:

      Não fornecer um atributo Url,title, ou description para o elemento siteMapNode ao especificar um atributo siteMapFile.

    Para obter mais informações sobre como criar um arquivo de mapa de sites, consulte Mapas do Site do ASP.NET.

Para vincular a um provedor de mapa de site personalizado a partir de um mapa de site pai

  1. No mapa de site pai, crie um SiteMapNode na localidade da estrutura de navegação onde você deseja que o mapa de site filho seja exibido.

    Por exemplo, se você estiver usando a classe padrão XmlSiteMapProvider, abra o arquivo Web.sitemap e adicione o seguinte SiteMapNode no local apropriado na hierarquia.

    <siteMapNode provider="SimpleTextSiteMapProvider" />
    
    Observação:

    O atributo provider corresponde ao atributo name do provedor no arquivo Web.config.

  2. Adicione o provedor de mapa de site personalizados para o arquivo web.config, usando um elemento add.

    O código a seguir adiciona o provedor personalizado chamado SimpleTextSiteMapProvider,mas mantém XmlSiteMapProvider como o provedor de mapa de sites padrão.

    <configuration>
      <!-- other configuration sections -->
      <system.web>
        <!-- other configuration sections -->
        <siteMap defaultProvider="XmlSiteMapProvider">
          <providers>
            <add
              name="SimpleTextSiteMapProvider"
          type="Samples.AspNet.SimpleTextSiteMapProvider,Samples.AspNet"
              siteMapFile = "siteMap.txt" />
          </providers>
        </siteMap>
      </system.web>
    </configuration>
    

    Para obter mais informações sobre como criar um provedor de mapa de site personalizados, consulte Implementando provedores site-Map em ASP.NET.

Configurando mapas múltiplos de site no arquivo Web.config

Vincular mapas de site como nos dois exemplos anteriores permite-lhe gerar uma estrutura de mapa de site a partir de muitos pedaços.Como alternativa, você pode adicionar referências a mapas de site diferentes no arquivo Web.config, essencialmente tornando-os como se fossem provedores diferentes.Isso é útil quando áreas diferentes de um site da Web precisam de diferentes estruturas de navegação.

Para configurar mapas múltiplos de site no arquivo Web.config

  • No arquivo Web.config, localize a seção siteMap e crie um elemento add para cada mapa do site.

    O exemplo a seguir mostra como adicionar dois mapas do site.

    <configuration>
      <!-- other configuration sections -->
      <system.web>
        <!-- other configuration sections -->
        <siteMap defaultProvider="XmlSiteMapProvider">
         <providers>
           <add          name="Company1SiteMap"         type="System.Web.XmlSiteMapProvider"          siteMapFile="~/Company1/Company1.sitemap" />       <add          name="Company2SiteMap"         type="System.Web.XmlSiteMapProvider"          siteMapFile="~/Company2/Company2.sitemap" />
         </providers>
        </siteMap>
      </system.web>
    </configuration>
    

    Com essa configuração, você pode usar os arquivos ~/Company1/Company1.sitemap e ~/Company2/Company2.sitemap com os membros de navegação API e com controles de navegação, como SiteMapPath, TreeView e Menu.Para fazer isso, você define a propriedade SiteMapProvider relevante para Company1SiteMap ou Company2SiteMap.

    Para obter mais informações sobre como adicionar controles de navegação a um página da Web, consulte Como: Adicionar navegação simples.

Consulte também

Tarefas

Como: Adicionar navegação simples

Conceitos

Mapas do Site do ASP.NET

Provedores de Navegação em Sites ASP.NET

Cortes de segurança em mapas de site no ASP.NET

Implementando provedores site-Map em ASP.NET

Tornando navegação em sites do ASP.NET seguro

Proteção de acesso a dados

Outros recursos

Segurança de aplicativos ASP.NET em ambientes hospedados