Partager via


Comment : configurer plusieurs plans de sites et fournisseurs sitemap

Mise à jour : novembre 2007

Par défaut, la navigation du site ASP.NET fonctionne avec un fichier XML nommé Web.sitemap qui décrit la hiérarchie de votre site Web. Toutefois, vous pouvez utiliser plusieurs fichiers ou fournisseurs de plan de site pour décrire la structure de navigation de tout un site Web.

Par exemple, vous pourriez avoir un plan de site principal qui référence un plan de site enfant. Le plan de site principal pourrait être les éléments suivants :

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

Le plan enfant pourrait être :

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

Le menu résultant de ces deux plans de sites apparaîtra comme suit :

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

Pour configurer plusieurs plans de sites pour un site unique, commencez par un plan de site à la racine de votre application. Configurez ensuite le fournisseur racine en tant que fournisseur de plan de site par défaut dans votre fichier Web.config. Puis liez-le aux plans de sites enfants ou fournisseurs en les référençant dans un objet SiteMapNode.

Pour effectuer une liaison à un fichier sitemap enfant à partir d'un plan de site parent

  • Dans le plan de site parent, créez un objet SiteMapNode à l'emplacement dans la structure de navigation où vous souhaitez que le plan de site enfant soit affiché.

    Par exemple, si vous utilisez par défaut la classe XmlSiteMapProvider, ajoutez l'objet SiteMapNode à l'emplacement approprié dans le fichier Web.sitemap.

    <siteMapNode siteMapFile="MySiteMap.sitemap" />
    

    L'attribut siteMapFile peut prendre l'une des formes suivantes :

    • une référence relative à l'application, telle que ~/MySiteMap.sitemap ;

    • un chemin virtuel, par exemple /Customers/MySiteMap.sitemap ;

    • une référence de chemin relative à l'emplacement du fichier sitemap actuel, par exemple Guests/MySiteMap.sitemap.

      Remarque :

      Ne fournissez pas d'attribut Url, titleou description pour l'élément siteMapNode lors de la spécification d'un attribut siteMapFile.

    Pour plus d'informations sur la création d'un fichier de plan de site, consultez Plans de sites ASP.NET.

Pour effectuer une liaison à un fournisseur sitemap personnalisé à partir d'un plan de site parent

  1. Dans le plan de site parent, créez un objet SiteMapNode à l'emplacement dans la structure de navigation où vous souhaitez que le plan de site enfant soit affiché.

    Par exemple, si vous utilisez la classe par défautXmlSiteMapProvider, ouvrez votre fichier Web.sitemap et ajoutez l'objet SiteMapNode à l'emplacement approprié dans la hiérarchie.

    <siteMapNode provider="SimpleTextSiteMapProvider" />
    
    Remarque :

    L'attribut provider correspond à l'attribut name du fournisseur dans le fichier Web.config.

  2. Ajoutez le fournisseur de plan de site personnalisé au fichier Web.config en utilisant un élément add.

    Le code suivant ajoute le fournisseur personnalisé nommé SimpleTextSiteMapProvider, mais conserve XmlSiteMapProvider comme fournisseur de plan de site par défaut.

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

    Pour plus d'informations sur la création d'un fournisseur plan de site personnalisé, consultez Implémentation de fournisseurs sitemap ASP.NET.

Configuration de plusieurs plans de sites dans le fichier Web.config

La liaison de plusieurs plans de sites, comme dans les exemples précédents, vous permet de générer une structure de plan de site unique à partir de plusieurs fragments. Vous pouvez également ajouter des références à différents plans de sites dans le fichier Web.config, qui les fait apparaître comme des fournisseurs différents. Ce procédé est intéressant lorsque différentes zones d'un site Web ont besoin de structures de navigation différentes.

Pour configurer plusieurs plans de sites dans le fichier Web.config

  • Dans le fichier Web.config, localisez la section siteMap et créez un élément add pour chaque plan de site.

    L'exemple suivant indique comment ajouter deux plans de 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>
    

    Avec cette configuration, vous pouvez utiliser le ~/Company1/Company1.sitemap et ~/Company2/Company2.sitemap fichiers avec les membres API de navigation et avec contrôles de navigation, tels que SiteMapPath, TreeViewet Menu. Pour ce faire, affectez à la propriété SiteMapProvider la valeur Company1SiteMap ou Company2SiteMap.

    Pour plus d'informations sur l'ajout de contrôles de navigation à une page Web, consultez Comment : ajouter la navigation de site simple.

Voir aussi

Tâches

Comment : ajouter la navigation de site simple

Concepts

Plans de sites ASP.NET

Fournisseurs de navigation de site ASP.NET

Suppression de la sécurité sitemap ASP.NET

Implémentation de fournisseurs sitemap ASP.NET

Sécurisation de la navigation de site ASP.NET

Sécurisation de l'accès aux données

Autres ressources

Sécurité des applications ASP.NET dans les environnements hébergés