Использование Dynamic Data на практике Гайдар Магдануров t: twitter.com/gaidar p: +7 (905) e:
Сегодня в докладе… Поговорим… Что такое Dynamic Data? Посмотрим... Как оно выглядит? Подумаем... Подходит ли нам?
Что такое Dynamic Data? Оснастка для работы с данными Гибкая кастомизация Валидация данных Доступно в.NET FW 3.5 SP1 / 4.0
Архитектура Dynamic Data Источник данныхМодель данныхМета-данные
Три шага к Dynamic Data Определить модель данных Зарегистрировать модель Кастомизировать шаблоны
Возможности кастомизации Шаблоны страниц (PageTemplates)Шаблоны полей (FieldTemplates)Типы данных (UIHint)СтраницыDynamicField/DynamicControl
Посмотрим
Маршрутизация routes.Add( new DynamicDataRoute("{table}/{action}.aspx") { Constraints= new RouteValueDictionary( new { action= "List|Details|Edit|Insert" }), Model= model }); routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") { Action= PageAction.List,ViewName= "ListDetails", Model= model}); routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx"){ Action= PageAction.Details, ViewName= "ListDetails",Model= model});
Контролы и страницы
Применение мета-данных using System; using System.ComponentModel.DataAnnotations; [MetadataType(typeof(EmployeeMetadata))] public partial class Employee { } public class EmployeeMetadata { [UIHint("DateTimeCalendar")] public objectHireDate{ get; set; } }
Валидация public class CustomerMetadata{ [Required()] public object Title; } public partial class Customer { partial void OnTitleChanging(string value) { if(!Char.IsUpper(value[0])) {throw new ValidationException(!!!"); } }
Валидация public partial class Employee{ partial void OnValidate(System.Data.Linq.ChangeAction action){ if(action== System.Data.Linq.ChangeAction.Insert)) { if(this._BirthDate.Value.CompateTo(DateTime.Now)>0) throw new ValidationException(!!!); }
Возможности Независимость от слоя данных –LINQ2SQL, Entity Framework,ADO.NET Data Services Правила валидации –Атрибуты полей на уровне модели Ограничение доступа –На уровне web.confg / на уровне страницы
Пример из жизни
Оно нам надо? Сценарий СправочникиДА Простой интерфейс редактированияДА Частые простые изменения схемыДА «Описательные данные»ДА Сложный интерфейс редактированияНЕТ Данные со сложными логическими связямиНЕТ
Где узнать больше? Официальные сайты Блоги Пишите мне