Dynamic Content using Razor View

Le viste vengono utilizzate per esporre i dati contenuti nel dominio dell’applicazione attraverso l’interfaccia utente. Questa operazione è possibile aggiungendo contenuti dinamici, ovvero generati runtime, alla vostra applicazione.

Using Sections

Il Razor Engine supporta le sezioni ovvero dei segmenti di codice che possono essere inseriti nelle pagine di layout. In questo modo è possibile applicare codice dinamico all’interno della pagina. Prendiamo come esempio il file Index.cshtml:

Nelle precedenti linee di codice abbiamo definito due sezioni all’interno della pagina utilizzando il tag @section seguito dal nome della sessione. Per renderizzare le sezioni dovremo richiamare il metodo @RenderSection nel codice sorgente della pagina:

IL metodo @RenderSection espone anche il parametro required, che permette di definire se la sezione in questione deve essere renderizzata obbligatoriamente oppure è facoltativa.

Using Partial View

Le partial view sono file cshtml o vbhtml che possono essere integrati in altre viste. L’utilizzo delle partial view è molto indicato se il codice contenuto nella vista si ripete in più punti della nostra applicazione. Per creare una nuova vista parziale occorre spuntare la voce “Create as a partial view” nell’interfaccia di inserimento di una nuova vista:

Create View Interface

Create View Interface

Supponiamo di voler inserire un link all’interno della vista parziale:

Per richiamare il contenuto della vista basterà utilizzare il metodo Partial() messo a disposizione dal Razor engine:

Using Child Action

Le child action sono action method che possono essere richiamati all’interno di una vista, possono risultare molto utili quando non si vuole ripetere la logica del controllo in più punti dell’applicazione. Per dichiarare una child action occorre utilizzare l’attributo ChildActionOnly:

In questo caso verrà renderizzata una partial view fortemente tipizzata di nome “Time”:

Per renderizzare il risultato della vista occorre richiamare l’action method Time utilizzando il metodo Html.Action(), in questo modo sarà possibile richiamare la child action direttamente da una qualsiasi vista: