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
Organizzare i moduli sfruttando CommonJS
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript
Pubblicare la documentazione di un repository con GitHub Pages
Utilizzare parametri a livello di controller nel routing di ASP.NET Core
Gestire gli errori di caricamento delle immagini
Utilizzare l'attributo HTML inert per disabilitare gli eventi
Organizzare il codice JavaScript utilizzando i moduli
Utilizzo di Set e Array in JavaScript
Utilizzare .NET Framework con le Azure Function in modalità isolata
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Gestione degli environment per il deploy con un workflow di GitHub