Masterpage non solo per il layout
Le nuove MasterPage di Asp.net 2.0 sono molto comode per gestire il layout delle nostre applicazioni web, ma spesso pensarle solo per il layout può essere riduttivo.
Infatti se considerate alla MasterPage a come utilizzavamo gli UserControl nella versione 1.1 possono essere molto potenti.
Cosa intendo?
Mettiamo il caso di dover gestire la validazione lato server e di dover tornare un'errore generico all'utente e debba essere centralizzato per tutta l'applicazione.
Quindi inseriamo una label nella masterpage
<asp:Label ID="lblError" runat="server" ForeColor="#C00000" Visible="False" />
e già così nella pagina possiamo accedere al controllo facendo
this.Master.FindControl("lblError");
E' un'approccio che sinceramente non mi piace perchè andiamo accedere al controllo che è privato nella masterpage e dovremmo comunque castare l'oggetto.
Invece la cosa migliore è esporre come proprietà della masterpage le proprietà che ci interessano del controllo, in questo caso la proprietà Text e Visibile.
Quindi nella masterpage faremo
public string TextError
{
get
{return lblError.Text;}
set
{lblError.Text = value; }
}
public bool VisibleError
{
get
{return lblError.Visible;}
set
{lblError.Visible = value; }
}
Poi per poter accedere in maniera tipizzata alle proprietà della masterpage dobbiamo aggiungere a livello di pagina come virtual path la masterpage.
Quindi subito dopo la direttiva <@ Page dobbiamo inserire la direttiva <@ MasterType
<%@ MasterType VirtualPath="~/Default.master" %>
in questo modo possiamo accedere direttamente alle proprietà TextError e VisibleError con
this.Master.TextError = "Si è generato un errore";
allo stesso modo potremmo gestire anche gli altri controlli della Masterpage
martedì, 10 ott 2006 Ore. 14.30