Condividi tramite


Procedura: configurare più mappe del sito e provider di mappa del sito

Aggiornamento: novembre 2007

Per impostazione predefinita, per definire gli spostamenti all'interno dei siti ASP.NET viene utilizzato un file XML denominato Web.sitemap in cui è descritta la gerarchia del sito Web. Tuttavia, per descrivere la struttura di spostamento di un intero sito Web, può essere opportuno utilizzare più file o provider di mappa del sito.

Ad esempio, è possibile avere una mappa del sito principale che fa riferimento a una mappa del sito figlio. La mappa del sito principale potrebbe essere come segue:

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

La mappa figlio potrebbe essere come segue:

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

Quindi, il menu risultante da queste due mappe di sito sarà:

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

Per configurare più mappe di sito per un singolo sito, è necessario innanzitutto crearne una nella cartella radice dell'applicazione, quindi configurare il provider radice come provider di mappa del sito predefinito nel file Web.config. Una volta effettuate queste operazioni, creare i collegamenti ai provider o alle mappe del sito figlio inserendone i riferimenti in un oggetto SiteMapNode.

Per creare un collegamento a un file di mappa del sito figlio da una mappa del sito padre

  • Dalla mappa del sito padre creare un nodo SiteMapNode nella posizione della struttura di spostamento in cui si desidera visualizzare la mappa del sito figlio.

    Se ad esempio si utilizza la classe predefinita XmlSiteMapProvider, aggiungere la seguente specifica di SiteMapNode nella posizione appropriata del file Web.sitemap.

    <siteMapNode siteMapFile="MySiteMap.sitemap" />
    

    L'attributo siteMapFile può assumere uno dei seguenti formati:

    • Un riferimento relativo all'applicazione, ad esempio ~/MySiteMap.sitemap.

    • Un percorso virtuale, ad esempio /Customers/MySiteMap.sitemap.

    • Un riferimento a un percorso relativo al percorso del file di mappa del sito corrente, ad esempio Guests/MySiteMap.sitemap.

      Nota:

      Non fornire un attributo Url, title o description per l'elemento siteMapNode quando si specifica un attributo siteMapFile.

    Per ulteriori informazioni sulla creazione di un file di mappa del sito, vedere Mappe del sito ASP.NET.

Per creare un collegamento a un provider di mappa del sito personalizzato da una mappa del sito padre

  1. Dalla mappa del sito padre creare un nodo SiteMapNode nella posizione della struttura di spostamento in cui si desidera visualizzare la mappa del sito figlio.

    Se ad esempio si utilizza la classe predefinita XmlSiteMapProvider, aprire il file Web.sitemap e aggiungere la seguente specifica di SiteMapNode nella posizione appropriata della gerarchia.

    <siteMapNode provider="SimpleTextSiteMapProvider" />
    
    Nota:

    L'attributo provider corrisponde all'attributo name del provider definito nel file Web.config.

  2. Aggiungere il provider della mappa del sito al file Web.config utilizzando un elemento add.

    Mediante il codice riportato di seguito viene aggiunto il provider personalizzato denominato SimpleTextSiteMapProvider, ma mantenuto XmlSiteMapProvider come provider di mappa del sito predefinito.

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

    Per ulteriori informazioni sulla creazione di un provider di mappa del sito personalizzato, vedere Implementazione dei provider di mappa del sito ASP.NET.

Configurazione di più mappe del sito nel file Web.config

Collegando tra loro più mappe del sito, come illustrato negli esempi precedenti, è possibile generare una singola struttura di mappa del sito a partire da più mappe. In alternativa, è possibile aggiungere nel file Web.config riferimenti a diverse mappe del sito, specificate come se si trattasse di provider di mappa del sito differenti. Questa soluzione risulta utile quando è necessario utilizzare strutture di spostamento differenti per le diverse aree del sito Web.

Per configurare più mappe del sito nel file Web.config

  • Nel file Web.config, individuare la sezione siteMap e creare un elemento add per ogni mappa del sito.

    Nell'esempio seguente viene mostrato come aggiungere due mappe del sito.

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

    Con questa configurazione, è possibile utilizzare i file ~/Company1/Company1.sitemap e ~/Company2/Company2.sitemap con i membri API e i controlli di spostamento, ad esempio SiteMapPath, TreeView e Menu. A tale scopo, impostare la relativa proprietà SiteMapProvider su Company1SiteMap o Company2SiteMap.

    Per ulteriori informazioni sull'aggiunta di controlli di spostamento a una pagina Web, vedere Procedura: aggiungere l'esplorazione semplice di siti.

Vedere anche

Attività

Procedura: aggiungere l'esplorazione semplice di siti

Concetti

Mappe del sito ASP.NET

Provider di esplorazione all'interno dei siti ASP.NET

Rimozione della protezione della mappa del sito ASP.NET

Implementazione dei provider di mappa del sito ASP.NET

Protezione del sistema di spostamento all'interno dei siti ASP.NET

Protezione dell'accesso ai dati

Altre risorse

Protezione delle applicazioni ASP.NET in ambienti host