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:
@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:
@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:
@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:
<h4>Giorni della settimana:</h4> <ul>@for (int index = 0; index <= 6; index++) { <li> @((DayOfWeek)index) </li> } </ul>
<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 Razorhttps://www.aspitalia.com/focuson/1253/Speciale-Razor-View-Engine-WebMatrix-ASP.NET-MVC.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire una query su SQL Azure tramite un workflow di GitHub
Generare token per autenicarsi sulle API di GitHub
Usare un KeyedService di default in ASP.NET Core 8
Estrarre dati randomici da una lista di oggetti in C#
Referenziare un @layer più alto in CSS
Ottenere un token di accesso per una GitHub App
Sostituire la GitHub Action di login su private registry
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire query verso tipi non mappati in Entity Framework Core
Cancellare una run di un workflow di GitHub