Export (0) Print
Expand All

How to: Configure Multiple Site Maps and Site-Map Providers 

By default, ASP.NET site navigation works with an XML file named Web.sitemap that describes the hierarchy of your Web site. However, you might want to use more than one site-map file or site-map provider to describe the navigation structure of an entire Web site.

To configure multiple site maps for a single site, start with a site map in the root of your application. Next, configure the root provider as the default site-map provider in your Web.config file. Then, link to child site maps or providers by referencing them in a SiteMapNode object, as in the following two examples.

To link to a child site-map file from a parent site map

  • From the parent site map, create a SiteMapNode in the location in the navigation structure where you want the child site map to be displayed. For example, if you are using the default XmlSiteMapProvider, add the following SiteMapNode in the appropriate location in the Web.sitemap file.

    <siteMapNode siteMapFile="MySiteMap.sitemap" />
    
    NoteNote

    The siteMapFile attribute can take one of the following forms:

    • An application-relative reference, such as ~/MySiteMap.sitemap.

    • A virtual path, such as /Customers/MySiteMap.sitemap.

    • A path reference that is relative to the location of the current site-map file, such as Guests/MySiteMap.sitemap.

    For more information about creating a site-map file, see ASP.NET Site Maps.

To link to a custom site-map provider from a parent site map

  1. From the parent site map, create a SiteMapNode in the location in the navigation structure where you want the child site map to be displayed. For example, if you are using the default XmlSiteMapProvider, open your Web.sitemap file and add the following SiteMapNode in the appropriate location in the hierarchy.

    <siteMapNode provider="SimpleTextSiteMapProvider" />
    
    NoteNote

    The provider attribute corresponds to the provider's name attribute in the Web.config file.

  2. The custom site-map provider must be added to your Web.config file by using the add property. The following code adds the custom provider called SimpleTextSiteMapProvider, but maintains the XmlSiteMapProvider as the default site-map provider.

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

    For more information about creating a custom site-map provider, see Implementing ASP.NET Site-Map Providers.

Configuring Multiple Site Maps in the Web.config File

Linking site maps together as in the previous two examples allows you to generate a single site-map structure from many pieces. Alternatively, you can add references to different site maps in the Web.config file, essentially making them appear like different providers. This is beneficial when different areas of your Web site need different navigational structures.

To configure multiple site maps in the Web.config file

  • In your Web.config file, locate the <siteMap> section. If it does not exist, use the following code. Otherwise, just insert the <add> sections.

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

    Assuming that the ~/Company1/Company1.sitemap and ~/Company2/Company2.sitemap files exist, you can now use them with the navigation API members and with navigation controls, such as SiteMapPath, TreeView, and Menu by setting the relevant SiteMapProvider property to Company1SiteMap or Company2SiteMap.

    For more information about adding navigation controls to a Web page, see How to: Add Simple Site Navigation.

See Also

Community Additions

ADD
Show:
© 2014 Microsoft