Capita spesso di dover riutilizzare più volte la stessa logica all'interno di una pagina Razor, ad esempio per rappresentare in maniera uniforme il medesimo dato. Esigenze di questo tipo si risolvono comunemente creando un metodo. Ciò che può inizialmente spiazzare, però, è che se proviamo a implementarlo all'interno di un comune blocco di codice di una pagina Razor, otteniamo un errore di compilazione.
@{ private string SomeMethod() { // scritto così non compila... } }
@Code Private Function SomeMethod() As String() ' scritto così non compila End Function End Code
Questo accade perché, in fase di parsing del markup, Razor include il contenuto di un blocco di codice all'interno del metodo Execute della classe base WebPage o WebViewPage (a seconda del fatto che stiamo realizzando un'applicazione ASP.NET Web Pages o ASP.NET MVC).
Per realizzare invece dei metodi o proprietà aggiuntivi, è necessario sfruttare l'apposito blocco @functions:
@functions{ private string SomeMethod() { return DateTime.Today.ToShortDateString(); } } <span>La data di oggi è @this.SomeMethod()</span>
La sintassi in Visual Basic è simile e utilizza il blocco Functions..End Functions:
@Functions Private Function SomeMethod() As String Return DateTime.Today.ToShortDateString() End Function End Functions
All'interno di una pagina possiamo realizzare anche delle particolari categorie di metodi, chiamati Helper, utilizzando l'omonimo blocco helper. La differenza rispetto ai metodi tradizionali, è che essi non presentano un valore di ritorno, ma scrivono direttamente all'interno del buffer in output, dandoci quindi la possibilità di inserire del markup al loro interno:
@helper ShowTodayDate() { if (DateTime.Today.Day == 25 && DateTime.Today.Month == 12) { <h2>Buon Natale!!!</h2> } else { <span>La data di oggi è @DateTime.Today.ToShortDateString()</span> } }
@Helper ShowTodayDate() If DateTime.Today.Day = 25 AndAlso DateTime.Today.Month = 12 @<h2>Buon Natale!!!</h2> Else @<span>La data di oggi è @DateTime.Today.ToShortDateString()</span> End If End Helper
Per utilizzare un helper, è sufficiente referenziarlo all'interno della pagina:
<div class="..."> @ShowTodayDate() </div>
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
Real world .NET Architecture
GitHub <3 .NET
Sviluppo applicazioni x-plat con .NET MAUI
Accedere alla console di una Azure Container App
Confronto tra moduli in Javascript: ES e commonJS
Dependency Injection e custom validator in Blazor con .NET 7.0
Sfruttare i tag nell'output cache di ASP.NET Core 7
Controllare se un branch esiste nel remote con un workflow di GitHub
Utilizzare la parola chiave nameof per referenziare i nomi dei parametri di un metodo in C#
Taggare la output cache in base al routing in ASP.NET Core
Le novità di Entity Framework (Core) 7
Sviluppare applicazioni serverless con Azure Container Apps
I più letti di oggi
- Da oggi è possibile sviluppare per Windows Phone 7 anche in Visual Basic
- Disponibile la ROM e l'SDK di Windows Phone 7.1 beta 2
- Rilasciata una preview di Windows Phone SDK 7.1.1 per Tango
- Le novità di Azure da TechEd 2013 North America: fatturazione per minuto, BizTalk Services e nuovi benefit per abbonati MSDN
- ASP.NET Website Programming
- Blazor: from 0 to SPA
- Visual Studio Code e ASP.NET 5 su Windows, Linux e MacOSX
- Visual Studio, Open Source, Cloud e Web
- Le novità di Visual Studio 2013 Update 2 e le opportunità per gli sviluppatori