ASP.NET 2.0 Site Navigation: breadcrumb a livello di applicazione

La funzione sitemap che guida le funzioni di Breadcrumb (controllo SiteMapPath) di default lavorano a livello di singola pagina ossia visualizzano il percorso di navigazione tra le pagine di una applicazione web ad esempio può visualizzare: 

   Modifica indirizzi di spedizione > Imposta indirizzo di spedizione preferenziale > Salva

a cui corrispondono le pagine
- /ModificaIndirizziSpedizione/Default.aspx
- /ModificaIndirizziSpedizione/IndirizzoSpedizionePreferenziale.aspx
- /ModificaIndirizziSpedizione/Salva.aspx (pagina corrente).

Per usare il Breadcrumb a livello di intero Portale (composto da più applicazioni Web distinte) e far si che visualizzi il percorso di navigazione tra le applicazioni del portale e ottentere ad esempio la visualizzazione di

   Winery S.p.a > Sales > Customer Service Italia > Call Center > Apertura chiamata di assistenza

in tutte le pagine ASPX della applicazione corrente AperturaNuovaChiamataDiAssistenza viene in aiuto l'evento

   SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)

che può essere registrato a livello di intera applicazione nel Global.asax in Application_Start oppure in un HttpModule da condividere tra tutte le applicazioni del portale grazie alle voci nel Web.Config di registrazione del HttpModule ereditabili  automaticamente.

Il codice che risolve dentro l'evento è questo:

if (e.Provider.CurrentNode != null) return e.Provider.CurrentNode;

string appUrl = HttpContext.Current.Request.ApplicationPath + "/";
return e.Provider.FindSiteMapNode(appUrl);

Print | posted @ lunedì 28 novembre 2005 16:07

Comments have been closed on this topic.