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
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.
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
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