Il PathSeparator e il controllo SiteMapPath

Il controllo SiteMapPath Ŕ assai utile per implementare un sistema di spostamento tra le pagine del sito recuperando i dati da un oggetto SiteMap, il quale a sua volta si basa su un file xml appositamente costrutito (e gestito tramite l’oggetto) che funge da mappa del sito.

Il SiteMapPath Ŕ estremamente comodo per spostarsi facilmente all’interno di un sito senza sprecare spazio e funge da punto di riferimento per individuare nel sito la posizione della pagina attualmente visualizzata.

Questo tipo di controllo visualizza un percorso gerarchico di nomi di pagine con collegamenti ipertestuali tramite il quale Ŕ possibile tornare dalla posizione corrente ai livelli superiori della gerarchia di pagine.

Il controllo SiteMapPath Ŕ costituito da nodi. Ciascun elemento del percorso viene indicato come un collegamento ipertestuale rappresentato da un oggetto SiteMapNodeItem e ogni nodo Ŕ separato dal successivo con un separatore.

Un errore che ho commesso in questi giorni, dovuto dal fatto che non avevo mai sentito la necessitÓ di usare il controllo in questione, Ŕ stato quello di confondere il corretto separatore da utilizzare.

Il controllo SiteMapPath, infatti, espone due sistemi per inserire un separatore. La proprietÓ PathSeparator, di tipo stringa, utilizzabile per fornire appunto stringhe letterali come separatori, e il PathSeparatorTemplate, di tipo ITemplate, per fornire come separatore un oggetto che pu˛ essere una immagine, una label e via dicendo.

Non s˛ per quale ragione, ma la proprietÓ PathSepartor mi era sfuggita, e avevo utilizzato il template con la stringa che mi interessava utilizzare come separatore.

La cosa bella era che tutto funzionava egregiamente, ma nel momento in cui ho creato il mio Adapter personale (per evitare quelle tonnellate di codice inutile generato dal controllo base), mi ritrovavo al posto della mia stringa il simbolo dei due punti. E non riuscivo a comprendere il perchŔ, fintanto che aprendo un ticket – pensando ad un bug – sul sito Microsoft, dopo diversi giorni ricevo una risposta circa la mia errata implementazione.

Il bug Ŕ stato chiudo come non fixed; effettivamente parte dell’errore era mio. Ma nessuno mi ha spiegato per˛ perchŔ la stringa – che non doveva essere correttamente visualizzata – senza adapter invece veniva rappresentata cosý gliela fornivo e per giunta perchŔ, invece di mostrare il carattere di default minore, venivano mostrati i due punti.

Misteri della programmazione ASP.Net!

Nota: il PathSepartorTemplate ha prioritÓ rispetto alla proprietÓ PathSeparator. Questo significa che se entrambe vengono impostate, quello che verrÓ mostrato sarÓ il contenuto del Template.

á

Technorati Tags: ,