Al fine di facilitare l’adozione di questo nuovo
view engine, molti dei concetti chiave di ASPX sono stati trasferiti in
Razor. Tra questi concetti troviamo, ad esempio, le
Layout page, che rappresentano l’equivalente delle
master pages. Il template del layout di default utilizzato al momento della creazione di una nuova applicazione MVC3 è definito in
/Views/Shared/_Layout.cshtml, ma è sempre possibile
creare delle pagine di layout addizionali e referenziarle all’interno della propria applicazione, mediante aggiunta delle seguenti istruzioni nelle viste apposite:
@{ Page.Title = "Titolo della pagina";
Layout = "~/Views/Shared/MyCustomLayout.cshtml";
}
All’interno della pagina di layout, in particolare, l’istruzione
@RenderBody() permette di definire il punto in cui la pagina che utilizza questo specifico layout deve eseguire il rendering del proprio contenuto. L’istruzione
@RenderSection(), infine, consente di definire all’interno della pagina di layout delle sezioni utente, eventualmente rese obbligatorie mediante utilizzo dell’attributo
required:
@RenderSection("RazorIntroSection", required:true)
Per referenziare all’interno di una vista
Razor i riferimenti URL e i file di contenuto, si possono utilizzare, rispettivamente, le funzioni
@Url.Content e
@Url.Action, che ricevono come parametro il percorso del file desiderato, preceduto dal carattere tilde (~) per identificare la radice virtuale del proprio sito:
<a href="@Url.Content("~/Content/Images/Vacanze.png")">Album delle vacanze!</a>
Infine, all’inizio di una pagina
Razor è possibile definire il tipo
@model, il che consente alla tecnologia
IntelliSense di lavorare correttamente in tutta la pagina (facilitando in tal modo il lavoro dello sviluppatore) e di attivare un’accurata validazione di tutta la vista a
compile-time. Per passare un
model così definito dal controller alla vista, è sufficiente restituire il
model stesso come parametro della funzione
View:
List<string> MyList = new List<string>(); // Model
MyList.Add("Hello");MyList.Add("How");MyList.Add("Are");MyList.Add("You?");return View(MyList);
Si noti come si possa passare dal controller alla vista un qualunque tipo di oggetto, compresi quelli non serializzabili. Gli esempi riportati in questo articolo hanno lo scopo di rappresentare un’introduzione all’utilizzo di
Razor e alle sue potenzialità per la definizione di viste nell’ambiente .NET. Per ulteriori
approfondimenti in merito a questo argomento si può fare riferimento a un
articolo pubblicato su CodeGuru.