Come abbiamo avuto modo di accennare nell'articolo introduttivo ad ASP.NET 4.5, questa nuova release introduce una nuova modalità per la gestione delle sorgenti dati, che sfrutta le modalità analoghe al model binding di ASP.NET MVC.
Il risultato è che task come l'aggiornamento dei dati da una GridView, dalla nuova versione, sono diventati estremamente più semplici. Cerchiamo di chiarire il concetto con un esempio e immaginiamo di avere in pagina la seguente griglia:
<asp:GridView runat="server" ID="theGrid" ItemType="WebApplication8.Employee" DataKeyNames="EmployeeID" AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false" UpdateMethod="theGrid_UpdateItem" SelectMethod="theGrid_GetData"> <Columns> <asp:CommandField ShowEditButton="True"></asp:CommandField> <asp:DynamicField DataField="FirstName" /> <asp:DynamicField DataField="LastName" /> <asp:DynamicField DataField="City" /> </Columns> </asp:GridView>
Con DataKeyNames abbiamo impostato come campo chiave la proprietà EmployeeID, indicando poi di usare il metodo theGrid_UpdateItem per aggiornare il dato sul database. L'implementazione di questo metodo è la seguente:
public void theGrid_UpdateItem(int employeeId) { var employee = _context.Employees.Find(employeeId); if (employee == null) { ModelState.AddModelError("", "Employee non trovato"); return; } TryUpdateModel(employee); if (ModelState.IsValid) { _context.SaveChanges(); } }
Come possiamo notare, esso riceve in ingresso un parametro che ha lo stesso nome della proprietà che abbiamo usato come chiave per la classe Employee e la usa per recuperare da database l'oggetto desiderato. A questo punto possiamo aggiornarne i dati tramite TryUpdateModel, che preleva i nuovi valori dalla form che è stata inviata in POST dal browser, e procedere al salvataggio.
Un'aspetto da notare è che, se per qualche ragione qualcosa nell'aggiornamento dovesse fallire, per esempio il caricamento del dato, l'errore verrà aggiunto all'interno del ModelState. Per visualizzare in pagina il messaggio corrispondente, è sufficiente aggiungere un DynamicValidator e un ValidationSummary, come nel codice seguente:
<asp:ValidationSummary runat="server" ID="summary" /> <asp:DynamicValidator runat="server" ID="validator" ControlToValidate="theGrid" /> <asp:GridView runat="server" ...> <Columns> ... </Columns> </asp:GridView>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Sfruttare al massimo i topic space di Event Grid MQTT
Gestire i null nelle reactive form tipizzate di Angular
Utilizzare politiche di resiliency con Azure Container App
Sfruttare lo streaming di una chiamata Http da Blazor
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Assegnare un valore di default a un parametro di una lambda in C#
Come migrare da una form non tipizzata a una form tipizzata in Angular
Potenziare Azure AI Search con la ricerca vettoriale
Utilizzare Tailwind CSS all'interno di React: primi componenti
Le novità di Angular: i miglioramenti alla CLI
Utilizzare i primary constructor in C#
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0
- Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
- Speciale Windows Store app: costruire app con WinRT per Windows 8