Master Pages, temi e controlli standard in ASP.NET 2.0

4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>

Come si può notare nell'esempio precedente, è possibile associare una specifica Master Page ad una Content Page tramite l'attributo MasterPageFile nell'ambito della direttiva @Page, specificando il percorso del file .master. In alternativa, è possibile definire la Master Page per le pagine anche a livello di singola cartella o a livello di applicazione direttamente nel web.config tramite l'attributo masterpagefile del tag <pages />.

<configuration>
    <system.web>
        <pages masterpagefile="MasterPage.master" />
    </system.web>
</configuration>

È inoltre possibile associare una Master Page ad una pagina anche dinamicamente via codice. L'associazione dinamica può essere fatta solamente nell'ambito dell'event handler dell'evento di pagina PreInit, dato che il runtime di ASP.NET carica le informazioni relative alle impostazioni della pagina subito dopo questo evento.

void Page_PreInit(object sender, EventArgs e)
{
    string master = "MasterPage.master";
    if(Page.Request["Master"] != null)
        master = Page.Request["Master"].ToString();
    this.MasterPageFile = master;
}

Negli esempi precedenti abbiamo visto una casistica semplificata circa l'uso delle Master Pages. In realtà è possibile utilizzare le Master Pages anche in scenari più sofisticati.

Innanzitutto è possibile annidare le Master Pages. In questo caso ciascuna pagina si comporta nei confronti della propria Master Page come una normale pagina di contenuto, indipendentemente dal fatto che la Content Page sia a sua volta Master Page. Una Master Page collegata ad un'altra Master Page presenta qualsiasi possibile combinazione di oggetti Content e ContentPlaceHolder.

In secondo luogo, una Master Page può essere associata ad una pagina di contenuto in relazione al tipo di browser utilizzato. Aggiungendo un prefisso all'attributo MasterPageFile nella direttiva @Page, è possibile indicare per quale particolare tipologia di browser la Master Page deve essere caricata a runtime (nell'esempio, il prefisso ie identifica Internet Explorer).

<%@ Page Language="c#" ie:MasterPageFile="IE_MasterPage.master" MasterPageFile="MasterPage.master" %>

Oltre che da template, la Master Page può fungere da Page Controller per le pagine di contenuto a cui è associata. Data una particolare Master Page è possibile definire nell'ambito della sua interfaccia una serie di membri pubblici custom. Per poter utilizzare questi membri aggiuntivi nell'ambito della pagina di contenuto, si possono seguire due strade. È possibile castare in modo esplicito la proprietà Master di Page al tipo specifico di MasterPage che si sta usando nell'ambito del codice.

((MyMaster)this.Master).MyMethod();

In alternativa è possibile utilizzare la direttiva @MasterType nell'ambito della Content Page. In questo caso non è più necessario fare il cast al tipo specifico di Master Page utilizzata.

<%@ MasterType VirtualPath="MasterPage.master" %>

Temi

In ASP.NET 2.0 i temi rappresentano il principale meccanismo per personalizzare la resa grafica delle applicazioni web. Un tema definisce un insieme di stili e di attributi grafici e li associa ai vari elementi e controlli utilizzati nell'ambito dell'applicazione. Ciascun tema è caratterizzato da un nome che lo identifica univocamente ed è composto dai file CSS contenenti gli stili dei tag, dagli skin dei controlli e dalle immagini.

Se da una parte un foglio di stile contiene le impostazioni di rappresentazione dei tag HTML/XHTML e definisce le classi CSS associate agli elementi delle pagine, dall'altra lo skin è un file di testo contenente i valori predefiniti per le proprietà grafiche relative ai controlli web. Di fatto possiamo pensare ad uno skin come ad una specie di stylesheet server-side riferito ai controlli di ASP.NET. Rispetto ad un file CSS, lo skin può contentere l'impostazione di proprietà grafiche che non hanno una corrispondenza con un attributo CSS. Anche se è possibile farlo, non sarebbe in ogni caso indicato utilizzare lo skin per impostare valori che possono essere settati utilizzando i fogli di stile. Risulta più corretto associare allo skin di un controllo una classe CSS in cui siano indicati tutti gli attributi utili alla definizione della resa grafica.

Un file .skin contiene l'insieme dei tag relativi ai controlli da personalizzare. Ogni skin può essere identificato tramite un ID oppure l'identificazione può essere omessa. Lo skin senza ID rappresenta lo skin predefinito per un particolare controllo. In uno stesso file .skin possono coesistere più skin relativi allo stesso tipo di controllo contrassegnati con ID diversi.

<asp:TextBox runat="server" SkinID="LongText" CssClass="InputText" Columns="100" />
<asp:TextBox runat="server" SkinID="ShortText" CssClass="InputText" Columns="10" />
<asp:TextBox runat="server" CssClass="InputText" Columns="50" />

Nell'ambito dell'applicazione è possibile specificare un particolare skin per un controllo web tramite la proprietà SkinID.

<asp:TextBox ID="txtEmail" Runat="server" SkinID="LongText" />

Per creare un tema basta inserire una nuova sottodirectory nella cartella App_Themes dell'applicazione web. Il nome della cartella rappresenta il nome del tema ed in essa vanno posizionati i file CSS e gli skin. Nella cartella relativa al tema possono essere presenti più file .css e .skin. Le immagini vanno collocate nella sottodirectory Images.

Theming

4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC