ASP.NET MVC e ASP.NET Core MVC danno la possibilità di componentizzare il markup grazie all'uso della partial View di Razor, che consentono di isolare pezzi di markup all'interno di file, che possono essere riutilizzati.
Questa è la strada da preferire qualora fosse necessario utilizzare il template da View differenti, ma esiste un'alternativa più semplice, ovvero di creare un template visibile solo a livello di View.
In questo caso, sfrutteremo la potenza di C#, unita a quella di Razor, per creare, di fatto, una funzione (da posizionare nel nostro file prima di invocarla):
Func<Product, object> myTemplate = @<text> <tr> <td> @Html.ActionLink(item.Title, "Details", "Products", new { id = item.ID }, null) </td> <td> @item.StartDate.ToString("dd/MM/yyyy") </td> <td> @item.EndDate.ToString("dd/MM/yyyy") </td> <td class="buttons"> @Html.ActionLink("Dettagli", "Details", "Products", new { id = item.ID }, null) @Html.ActionLink("Modifica", "Edit", "Products", new { id = item.ID }, null) </td> </tr> </text>;
Il codice precedente definisce un template in linea, a cui passeremo un'istanza di Product, il nostro modello, e che restituisce un generico Object.
Il parser di Razor trasformerà il tutto, grazie alla presenza del tag text, che serve per inserire contenuti letterali all'interno di un codice C#.
Per utilizzare il template così creato, ci basterà inserire la chiamata dove ne avremo bisogno, come nell'esempio:
<table> @foreach (var item in Model.NewProducts) { @Html.Raw(myTemplate(item)) } </table>
I template così creati, accettando dinamicamente un'istanza di un prodotto, potranno essere riutilizzati in più punti all'interno della view, con il vantaggio di aver centralizzato il codice e di poter modificare più facilmente il markup, in un punto solo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire dati sensibili nella configurazione in ASP.NET Core
Sfruttare il portale Azure per creare script di automazione
Test reporting in un workflow di GitHub
Organizzare i moduli sfruttando CommonJS
Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
3 metodi JavaScript che ogni applicazione web dovrebbe contenere - Parte 2
Le novità di .NET 7 e C# 11
Workflow di continuous deployment tramite pull request label in GitHub
Pubblicare un pacchetto di NuGet nel feed di GitHub
Gestire i file esterni in una PWA
Catturare la telemetria degli eventi di output cache in ASP.NET Core
I più letti di oggi
- Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
- Sfruttare la local cache del browser tramite gli ETag in #aspnetcore https://aspit.co/cfc di @crad77 #webapi #aspnetmvc #blazor #cache
- Chiamare direttamente un numero di telefono con HTML5
- Catturare la telemetria degli eventi di output cache in ASP.NET Core
- Workflow di continuous deployment tramite pull request label in GitHub