Durante lo sviluppo ASP.NET può essere utile o necessario accedere a controlli, metodi e/o proprietà della master page di una determinata web form. Ovviamente vorremmo farlo accendendo alla proprietà "Master" della pagina tuttavia questa proprietà è un'istanza della classe "System.Web.UI.MasterPage" che non contiene (ovviamente!) le nostre funzionalità custom. Sembra inoltre impossibile effettuare il cast sul tipo definito nel code behind della Masterpage stessa.

In realtà è possibile e molto semplice avere la proprietà "Master" della pagina come istanza della nostra masterpage, per farlo è sufficiente aggiungere una direttiva all'aspx della pagina. Precisamente la seconda riga dell'esempio
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType  virtualPath="~/MasterPage.master"%>

 

Nella direttiva MasterType il valore virtualPath deve essere lo stesso di MasterPageFile nella direttiva Page. In questo modo automaticamente si potrà accedere a proprietà, metodi, controlli della Masterpage tramite la proprietà "Master"
comments powered by Disqus