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
Creare un form con Bootstrap 5
Un confronto tra React, Angular, Vue.js e Svelte: Form e validazione
Utilizzare la keyword with in JavaScript
Eseguire uno scroll all'interno di una pagina Blazor
Modificare una variabile d'ambiente di un deployment di Kubernetes
Personalizzare la creazione dell'utenze Azure B2C tramite API connector
Usare l'option pattern per gestire la configurazione in ASP.NET Core
Avviare e arrestare programmaticamente un Hosted Service di ASP.NET Core
Comprimere le immagini contenute in un repository con una GitHub Action
Filtrare le chiamate HTTP ad un App Service in base al servizio Azure
Impostare l'identity resolution a livello globale in una No-Tracking query di Entity Framework Core
I più letti di oggi
- Utilizzare la parola chiave var con lambda expression e method group in C# 10
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- devConf 2022 - Online
- Log streaming di una Azure Container App
- Agenda di #devconf22 del 26/05 quasi al completo! Ce n'è per tutti i gusti: #dotnet, #aspnetcore, #blazor, #terraform, #githubAltre informazioni e iscrizioni su => https://aspit.co/devconf-22