Sappiamo che ogni pagina ASP.NET ha la proprietà publica Master, propria della classe Page, utile alla gestione o al richiamo di proprietà o metodi pubblici della master page associata alla pagina corrente.
Per chiamare per esempio il metodo HelloWorld() definito all'interno del file PeppeDotNet.master.cs, dobbiamo però effettuare un casting esplicito sulla proprietà Master, in quando questa ritorna un oggetto di tipo "MasterPage", che chiaramente non contiene il nostro metodo HelloWorld().
protected void Page_Load(object sender, EventArgs e)
{
PeppeDotNet masterPage = (PeppeDotNet)Page.Master;
masterPage.HelloWorld();
}
Abbiamo però anche un'altra possibilità.
Specificando la direttiva di pagina @MasterType, all'interno della pagina di contenuto ("content page"), il .NET Framwork tratterà la proprietà Master come se fosse direttamente del tipo effettivamente utilizzato, aggiungendo quindi il nostro metodo HelloWorld().
<%@ Page Language="C#" MasterPageFile="~/PeppeDotNet.master"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="~/PeppeDotNet.master" %>
protected void Page_Load(object sender, EventArgs e)
{
Master.HelloWorld();
}
La direttiva @MasterType, prevede l'utilizzo di due attributi: VirtualPath e TypeName, che non possono essere utilizzati assieme. Il primo si aspetta il percorso virtuale del file .master mentre il secondo prevede il nome della classe di code behind propria della master page (per intenderci, il nome della classe presente nel file PeppeDotNet.master.cs).