Per la generazione del markup HTML da restituire all'utente, ASP.NET MVC si basa su Razor, un engine che come sappiamo ci permette di mischiare markup con codice. Le view che definiamo con questo linguaggio vengono poi convertite in una serie di istruzioni che scrivono in uscita l'HTML. Esse possono essere definite come view dell'intera pagina o parziali, in file esterni. In realtà possiamo definire anche porzioni di markup che non vengono eseguite nel punto in cui sono state definite, ma sono delle funzioni che possiamo invocare quando vogliamo.
Questa possibilità viene comoda quando realizziamo helper method, cioè funzioni statiche che generano del markup a seconda dei parametri che passiamo. Spesso questi helper, però, devono far affidamento ad altri helper per evitare di avere un HTML complesso, oppure possono fare affidamento alle funzioni indicate in precedenza per passare una porzione di HTML.
Nello script di oggi proponiamo un semplice helper method che genera un div con uno stile e genera il suo contenuto mediante il template passato. Il suo utilizzo è il seguente:
@Html.LabelWithTemplate( @<text> <div>@Html.DisplayFor(m => m.Details.Date)</div> </text>)
Come possiamo vedere, l'uso del tag speciale
<div class="label"> <div>venerdì 16 ottobre 2015 00:00</div> </div>
Il primo div è generato dal nostro helper method, il secondo dalla chiamata a DisplayFor. Vediamo ora come è definita la funzione.
public static class HtmlExtensions { public static IHtmlString LabelWithTemplate(this HtmlHelper helper, Func<ViewContext, IHtmlString> template) { var tagBuilder = new TagBuilder("div"); tagBuilder.AddCssClass("label"); // Invoco la generazione dell'HTML del template tagBuilder.InnerHtml = template(helper.ViewContext).ToString(); return MvcHtmlString.Create(tagBuilder.ToString()); } }
Come possiamo vedere, la particolarità sta nella Func
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare agenti facilmente con Azure AI Agent Service
Centralizzare gli endpoint AI Foundry con Azure API Management
Path addizionali per gli asset in ASP.NET Core MVC
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare DeepSeek R1 con Azure AI
Loggare le query più lente con Entity Framework
Il nuovo controllo Range di Blazor 9
Supportare la sessione affinity di Azure App Service con Application Gateway
Creare una libreria CSS universale: Nav menu
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Proteggere le risorse Azure con private link e private endpoints
Recuperare le subissue e il loro stato di completamento in GitHub
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!