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
Eseguire query in contemporanea con EF
Loggare le query più lente con Entity Framework
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare QuickGrid di Blazor con Entity Framework
Filtering sulle colonne in una QuickGrid di Blazor
Il nuovo controllo Range di Blazor 9
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Change tracking e composition in Entity Framework