ASP.NET - Cambiare master page a runtime
Per cambiare la masterpage a runtime in una pagina è sufficiente fare l'override dell'evento PreInit della pagina, e qui inserire la seguente riga di codice:
protected void Page_PreInit(object sender, EventArgs e)
{
this.MasterPageFile = "myPage.master";
}
Questa possibilità ci può tornare molto utile quando vogliamo fare un sito ottimizzato per i PC e uno per i cellulari.
I passi da seguire sono i seguenti:
- Creare una classe BasePage che modifica la System.Web.UI.Page
- In questa pagina fare l'override dell'evento PreInit, come in questo esempio, dove uso il metodo Check dispositivo mobile
protected void Page_PreInit(object sender, EventArgs e)
{
if (CUtility.isNull(this.MasterPageFile) != "")
{
if (CUtility.isBrowserMobile())
this.MasterPageFile = "mobile.master";
else
this.MasterPageFile = "classic.master";
}
}
- Aggiornare tutte le pagine del sito in modo che implemetino la BasePage e non la System.Web.UI.Page
- A questo punto ci si può concentrare a fare le nostre pagine senza preoccuparsi più dell'ottimizzazione per il mobile, perchè ci penserà la BasePage a cambiarci la master page, unico punto che dovremo ottimizzare per i diversi dispositivi