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
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare QuickGrid di Blazor con Entity Framework
Disabilitare automaticamente un workflow di GitHub
Utilizzare una qualunque lista per i parametri di tipo params in C#
Creare una libreria CSS universale: Nav menu
Sostituire la GitHub Action di login su private registry
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Utilizzare Copilot con Azure Cosmos DB
Escludere alcuni file da GitHub Secret Scanning
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare l'espressione if inline in una pipeline di Azure DevOps