Modificare variabili presenti in una Master Page .NET

Le Master Pages sono una soluzione molto utile offerta dell’ambiente di sviluppo web .NET della Microsoft. Il modo in cui semplificano la vita, accentrando le principali questioni relative al design di più pagine di un sito web in un unico documento, mi ha conquistato da subito e l’ho utilizzato con soddisfazione a lungo.

Recentemente mi è capitato di dover modificare un attributo HTML comune a tutte le pagine del sito al quale sto lavorando: mi riferisco la tag BODY delle mie pagine.
Il mio primo approccio è stato lato cliente, cercando di sviluppare una funzione JQuery che permettesse la sostituzione della proprietà ID del tab BODY in ognina delle pagine, adattandola al contesto del contenuto presente.

Ho dovuto abbandonare questa strada perchè tutto diventava troppo complicato dovendo personalizzare lo script eseguito nell’HEAD delle mie pagine, mi sembrava una soluzione eccessivamente verbosa e difficile da mantenere.

Ho quindi effettuato dei testo per riuscire a modificare una singola variabile inserita appositamente nella mia Master Page di riferimento: la mia variabile era la seguente:

<body id="<%= this.body_id %>" >

E fin qui è stato facile. I guai sono arrivato dopo… non riuscivo ad accedere con successo alla variabile dagli script delle mie pagine, essa rimaneva sempre non definita e quindi vuota.
La soluzione è stata quella di ricorrere alla seguente notazione, che indica con chiarezza l’appartenenza della variabile ad una Master Page, permettendo così agli script delle pagine che la implementano di modificarla direttamente:

((SiteMaster)this.Master).body_id = "home";

dove “SiteMaster” è il nome della vostra Master Page (controllate bene il nome che la definisce nel file .AS ad essa abbinata, non al nome che ha il documento: io lo vedevo infatti diviso da un punto, “Site.Master”, ma nel codice la classe era chiamata “SiteMaster” ed è quello il nome da prendere in considerazione.
Questa soluzione mi è stata molto utile, spero possa tornare utile anche a voi.

This entry was posted in C# and tagged , , . Bookmark the permalink.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>