среда, 24 марта 2010 г.

ASP.NET Dynamic Data: Custom Page Specialize Model And Action

ASP.NET Dynamic Data позволяет производить достаточно точную конфигурацию страниц и редакторов для полей редактируемой сущности. На сегодня в поставку входят контексты Linq2Sql и Entity Framework.
Я остановлюсь на небольшом уточнении в конфигурации шаблона страницы для редактирования выбранной таблицы по определенному действию. Переопределить шаблоны для всех действий по конкретной таблицы можно при помощи route регистрируемого при старте приложения в Global.asax:

routes.Add(new DynamicDataRoute("Products/{action}.aspx")
{
    Table = "Products",
    ViewName = "ProductList",
    Model = model
});
В DynamicDataRoute классе есть public свойство Action, на первый взгляд оно должно ограничивать определенный route по конкретному дейстию, но это не так и чтобы сделать такое ограничение надо по-прежнему использовать ограничения Constraints:
routes.Add(new DynamicDataRoute("Products/{action}.aspx")
{
    Table = "Products",
    ViewName = "ProductList",
    Model = model,
    Constraints = new RouteValueDictionary(new { action = PageAction.List }),
});

Комбинация таких выражений позволяет тонко настраивать отображаемые страницы для конкретных моделей таблиц, функциональность которых должна быть изменена, по отношению к стандартным шаблонам.
Собственные шаблоны страниц должны размещаться в папке с именем таблицы дочерней папке ~/DynamicData/CustomPages. Из примера выше это должен быть шаблон ~/DynamicData/CustomPages/Products/ProductList.aspx.
В следующих постах я расскажу о расширении ASP.NET Dynamic Data Filtering и возможности использования Dynamic Data Controls в обычном front-end приложении.

Ссылки по теме:
ASP.NET Dynamic Data
Dynamic Data Model Overview