Come vedi nell'esempio che hai scaricato, le pagine non derivano direttamente da Page, ma da Master (che comunque deriva da Page).
La classe Master esegue l'override del metodo di rendering della pagina in questo modo:
protected override void Render(HtmlTextWriter writer)
{
this.LoadFromConfigFile();
this.master = this.Page.LoadControl(this.MasterPageFile);
Type type1 = new PlaceHolder().GetType();
for (int num1 = 0; num1 <= (this.Page.Controls.Count - 1); num1++)
{
if (this.Page.Controls[num1].GetType() == type1)
{
this.CheckControl((PlaceHolder) this.Page.Controls[num1], this.Page.Controls[num1].ID);
}
}
this.Page.Controls.Clear();
this.Page.Controls.AddAt(0, this.master);
base.Render(writer);
}
MasterPageFile contiene il percorso dello user control master da caricare tramite il metodo LoadControl() della pagina in funzione di quanto indicato nella sezione di configurazione presente nel web.config:
<masterPages>
<settings>
<add key="MasterPageFile" value="~/master_blue.ascx" />
<add key="red.aspx" value="~/master_red.ascx" />
</settings>
</masterPages>
Come vedi, è possibile specificare la master anche per una specifica pagina.
Ciao, Ricky.