Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

ASP.NET 2.0 - menu e sitemappath

Sto cominciando finalmente a "giocare" con asp.net 2.0 e tra le prime cose che ho provato, oltre alle master pages, ci sono il controllo Menu e il controllo SiteMapPath.

Per entrambi i sistemi di navigazione ho voluto sfruttare la possibilità nativa di asp.net 2.0 di creare un file xml che contenga la mappatura delle pagine del sito.

Di default asp.net 2.0 utilizza l'XmlSiteMapProvider che punta al file web.sitemap.

E' possibile cambiare il nome del .sitemap oppure è possibile volerne gestire più di uno, ed in questo caso, è sufficiente dichiarare nel web.config che esisterà un provider specifico(che poi puo essere sempre lo stesso) per ogni file .sitemap creato :

<siteMap defaultProvider="MySitemap1">
<
providers>
    <
add name="MySiteMap1" type="System.Web.XmlSiteMapProvider" siteMapFile="~/UI/MyFirst.sitemap" 
                     securityTrimmingEnabled
="true" />
    <add name="MySiteMap2" type="System.Web.XmlSiteMapProvider" siteMapFile="~/UI/MySecond.sitemap" 
                     securityTrimmingEnabled
="true" />
</providers>
</
siteMap>

Da notare la proprietà securityTrimmingEnabled che permette di abilitare il check dei ruoli.

Dichiarato e configurato il mio provider(comunque se mi andava bene usare web.sitemap potevo saltare questa parte di configurazione) ho trascinato sulla mia pagina i controlli Menu e SiteMapPath.

Per quanto riguarda il controllo Menu è stato sufficiente bindarlo ad un SiteMapDataSource, il quale a sua volta punta al SiteMapProvider che mi serve:

<asp:Menu runat="server" DataSourceID="siteMapDataSource" ... >

<
asp:SiteMapDataSource ID="siteMapDataSource" runat="server" SiteMapProvider="MySiteMap1" ShowStartingNode="false" />

Per il controllo SiteMapPath è stato sufficiente indicare invece direttamente il provider:

<asp:SiteMapPath ID="siteMapPath" runat="server" SiteMapProvider="MySiteMap1" ...>

Senza nessuna riga di codice ho ottenuto un menu e un sistema di navigazione.

Alcuni dubbi mi rimangono, come per esempio il fatto che non esiste la stessa proprietà DataSourceID anche per il controllo SiteMapPath.

Il controllo Menu è fortemente customizzabile come grafica, ma per esempio non è possibile implementare un menu orizzontale definendo una immagine di inizo e fine della barra menu completa.

Beh...questo è tutto...ma gli esperimenti continuano...(...trasloco di casa permettendo...)

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri