Realizzare branch e cicli con ASP.NET Razor

Quando realizziamo una pagina Web tramite Razor, tipicamente abbiamo bisogno di visualizzare alcune porzioni di markup solo al verificarsi di una condizione, o di ripetere dell'HTML per un certo numero di volte.

Come già sappiamo dallo script #1063, tramite il carattere @ possiamo effettuare lo switching tra il contesto del markup e quello del codice. Ciò può essere utile, ad esempio, per realizzare un blocco if o un ciclo for. In questi casi, il comportamento di Razor varia leggermente a seconda del fatto che stiamo utilizzando C# o Visual Basic. In particolare, se siamo in una pagina C#, il parser è in grado di accorgersi automaticamente della presenza di markup HTML, all'interno del blocco di codice:

C#
@if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
{
  <h1>Buona domenica!!</h1>
}
else
{
  <h1>Purtroppo è un giorno lavorativo</h1>
}

Ciò è possibile perché la porzione di HTML è ben evidenziata dalla presenza di un tag. Nel caso in cui vogliamo emettere del semplice testo, invece, è possibile utilizzare il tag speciale < text> o, alternativamente, il simbolo "@:", che svolge la medesima funzione:

C#
@if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
{
  <text>Buona domenica!!</text>
}
else
{
  @:Purtroppo è un giorno lavorativo
}

Razor con Visual Basic è invece decisamente più rigido, e richiede che, all'interno di blocchi di codice, le righe di markup vengano esplicitamente evidenziate tramite il carattere @, come nell'esempio seguente:

Visual Basic
@If DateTime.Today.DayOfWeek = DayOfWeek.Sunday
  @<h1>Buona domenica!!</h1>
Else
  @Purtroppo è un giorno lavorativo
End If

Come possiamo notare, in particolare, in Visual Basic il carattere @ è richiesto sia nel caso di presenza esplicita dei tag HTML che nel caso di testo semplice.

I medesimi concetti si applicano, ovviamente, anche ai cicli For e For Each:

C#
<h4>Giorni della settimana:</h4>
<ul>@for (int index = 0; index <= 6; index++)
{
  <li>
    @((DayOfWeek)index)
  </li>
}
</ul>

Visual Basic
<h4>Giorni della settimana:</h4>
<ul>@For index as Integer = 0 To 6
  @<li>
    @DirectCast(index, DayOfWeek)
  </li>
Next
</ul>

Il codice mostrato in questi esempi è leggermente più complesso del precedente, dato che contiene due context-switching, uno per il tag HTML e uno per portare in output l'elemento corrente dell'enumerazione.

Riferimenti utili

Il nostro speciale su ASP.NET Razor
http://www.aspitalia.com/focuson/1253/Speciale-Razor-View-Engine-WebMatrix-ASP.NET-MVC.aspx

Commenti

Realizzare branch e cicli con ASP.NET Razor (#1064) 1010 1
| Condividi su: Twitter, Facebook, LinkedIn, Google+

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi

CONNECTIONSTRING
Ti serve una stringa di connessione ad un database?
PROVIDER ASP.NET

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

Script via e-mail

Iscriviti alle nostre newsletter tematiche unoscript@lgiorno per ricevere gli script via e-mail.

Iscrivi subito! »»»

In primo piano
Media
In evidenza
MISC