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