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
Creare una libreria CSS universale: Nav menu
Utilizzare Copilot con Azure Cosmos DB
Paginare i risultati con QuickGrid in Blazor
Eseguire operazioni sui blob con Azure Storage Actions
Escludere alcuni file da GitHub Secret Scanning
Assegnare un valore di default a un parametro di una lambda in C#
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Creare una libreria CSS universale: Cards
Configurare lo startup di applicazioni server e client con .NET Aspire
Proteggere le risorse Azure con private link e private endpoints
Miglioramenti agli screen reader e al contrasto in Angular