I Dynamic Data Control sono uno strumento del .NET Framework 3.5 SP 1 che facilitano la creazione delle tipiche interfacce per la consultazione, la modifica, l'inserimento e la cancellazione di dati. Il sistema si basa su un modello ad oggetti, classe MetaModel, che rappresenta le tabelle, le colonne, le relazioni e tutte le informazioni inerenti alla validazione, alle descrizioni, ecc.
Con Visual Studio 2008 è facile creare un nuovo progetto attraverso la voce "Dynamic Data Entities Web Application", che prepara un'applicazione web con tutti i requisiti necessari:
- la directory DynamicData contenente tutti i template predefiniti per ogni tipologia di campo;
- le pagine ASP.NET per le rispettive viste, opportunamente create inserendo il controllo EntityDataSource per effettuare il binding con le DetailsView e GridView.
La classe MetaModel dispone del metodo RegisterContext per registrare un DataContext di LINQ to SQL o un ObjectContext di ADO.NET Entity Framework. Nel global.asax non resta che inserire nel metodo RegisterRoutes la registrazione del contesto da utilizzare:
model.RegisterContext(typeof(NorthwindModel.NorthwindEntities), new ContextConfiguration() { ScaffoldAllTables = true });
In questo modo sono prese in analisi tutte le entità contenute nell'ObjectContext attraverso un DataModelProvider specifico per ADO.NET Entity Framework. Tutte le colonne diventano ordinabili, ad eccezione degli array di byte, e gli attributi posti su ogni proprietà sono analizzati per determinare la descrizione, il nome, il valore predefinito, le tipologie di validazione e la formattazione. Per aggiungere queste informazioni si può sfruttare l'attributo MetadataType, per marcare ogni entità indicando quale classe usare per leggere per ogni proprietà quali attributi ci sono, senza toccare le classi auto generate dal designer edmx.
[MetadataType(typeof(CustomersMetadata))] public partial class Customers {} public class CustomersMetadata { [DisplayName("Indirizzo")] [RegularExpression(@"\w+.+")] public string Address { get; set; } }
L'uso della parola chiave partial permette di aggiungere l'attributo all'altra classe partial generata dal designer, mentre le proprietà o i campi della classe CustomerMetadata non devono avere nessuna implementazione perché questo oggetto non viene utilizzato direttamente, ma solo usato come informazione dei metadati.
Per approfondimenti sui Dynamic Data Control si veda:
Routing e dynamic data control di ASP.NET 3.5 SP1
https://www.aspitalia.com/articoli/asp.net3.5/routing-dynamic-data.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Generare velocemente pagine CRUD in Blazor con QuickGrid
Utilizzare QuickGrid di Blazor con Entity Framework
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Change tracking e composition in Entity Framework
Eseguire query in contemporanea con EF
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento