Una delle novità della terza versione del pattern
ASP.NET MVC, uscito il 9 novembre in
Release Candidate, è come già
anticipato il
nuovo view engine Razor. Quest'ultimo è stato creato da Microsoft con lo scopo di ottenere un motore di template e visualizzazione compatto ed espressivo. Vediamo quindi come
creare pagine di layout con
Razor.
La prima cosa che salta agli occhi è l'estensione dei file: quelli che preparano le
View non sono più
.aspx o
.ascx, bensì
.cshtml, estensione che
identifica univocamente tutti i file da leggere tramite
Razor. Dopodiché si distinguono
due tipi di view, quelle con contenuto comune (una sorta di master page), e quelle che sviluppano il layout vero e proprio del modello.
Per quanto riguarda le prime si notano alcune importanti
novità: la direttiva
@inherits, che in passato era obbligatoria in cima al file per tipizzare il modello in gioco, ora è opzionale (se non serve la si può omettere tranquillamente); si utilizza il metodo
@RenderBody() per indicare al
parser la posizione dove verrà posto il layout dati, e una chiamata a
View.Title per indicare la posizione, solitamente dentro la sezione
<Head>, del titolo della pagina.
Dopodiché, in un secondo file
.cshtml, si crea la
view del modello, sfruttando alcune facilitazioni fresche di implementazione: per prima cosa tramite
@model si contestualizza il tipo del modello; dopodiché usando
@{ Layout } si indica il nome della pagina master-layout (dettaglio che in molte situazioni pratiche può essere omesso, inserendolo una volta per tutte in un unico nuovo file di configurazione chiamato
_ViewStart.cshtml) e tramite
View.Title si indica il titolo della pagina (che verrà ripreso e posizionato dalla pagina master-layout stessa).
@model IList<Sample.Models.Fruits>
@{ View.Title = "Fruits of the Loom";
}
<h2>Fruits</h2>
<ul>
@foreach(var fruit in Model) { <li>@fruit.FruitName</li>
}
</ul>
Qui sopra un esempio del file
Index.cshtml, che fornisce il layout partendo da una chiamata
View, effettuata nel relativo Controller, con argomento un modello
IList. Come si vede, l'obiettivo di
pulizia e stringatezza è certamente raggiunto. Per maggiori informazioni è possibile dare un'occhiata alla
pagina ufficiale.