Руководство по ASP.NET Dynamic Data. Часть 2

вторник, 7 декабря 2010, Александр Краковецкий

Это продолжение руководства по ASP.NET Dynamic Data.

Кастомизация веб-сайта (продолжение)

Мы остановились на кастомизации веб-сайта и рассмотрели атрибуты, которые можно использовать для настройки веб-сайта.

На изображениях ниже проиллюстрировано использование этих атрибутов.

Для настройки модели:

http://www.developers.org.ua/wordpress/wp-content/uploads/2009/07/18-Metadata-Scheme.jpg

Для настройки отображения:

http://www.developers.org.ua/wordpress/wp-content/uploads/2009/07/20-Attributes-Mapping.jpg

Рассмотрим еще один сценарий, когда, например, нам необходимо вместо некоторого (одного) поля отобразить кастомный элемент управления. Для этого создаем новые user control и называем, их, например, MyText.ascx и MyText_Edit.ascx и помещаем их в папку FieldTemplates. Пусть это будет такой же TextBox, только с красным фоном, это, по сути, не важно, так как функционал и отображение может быть как угодно простым или сложным.

После этого нам необходимо создать класс для расширения функционала нашей сущности:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

///


/// Summary description for Post
///

[MetadataType(typeof(PostMetadata))]
public partial class Post
{

}

public class PostMetadata
{
  [ScaffoldColumn(true)]
  [UIHint("MyText")]
  public object PostTags { get; set; }
}

Как видно из примера выше, для изменения функционала (внешнего вида) конкретного поля необходимо переопределить метакласс для необходимой сущности и указать атрибут UIHint с указанием названия пользовательского элемента управления.

ASP.NET Dynamic Data и MVC

Наверняка, многие уже заметили большое сходство Dynamic Data и MVC. Правда в том, что Dymanic Data стал первым шагом к MVC и многие компоненты у них общие:

  • роутинг - библиотеку System.Web.Routing используют оба типа проекта - как Dynamic Data, так и AS.NET MVC. Кроме того, атрибуты у обеих фреймворках совпадают;
  • ASP.NET Dynamic Data MVC так и не вышел из Preview, так как в этом не было необходимости. Кому необходимо быстро создавать фронтэнд приложения - используют ASP.NEt Dynamic Data, если нужно писать с нуля - используют MVC, но взаимозаменяемыми они никогда не были;
  • Dynamic Data подойдет для тех, кто не знает MVC фреймворк, но хочет перейти на него "плавно".  

Вопросу работы с ASP.NET Dynamic Data MVC Preview посвящено несколько статей:

Создаём ASP.NET Dynamic Data MVC проект

Компилируем ASP.NET Dynamic Data MVC Preview для работы с MVC 2

ASP.NET Dynamic Data MVC Preview под лупой

Аннотирование модели данных, настройка отображения модели в DynamicData и ASP.NET MVC2 Templated helpers

Где взять примеры?

По ссылке http://aspnet.codeplex.com/releases/view/14473 можно скачать примеры для .NET 3.5 SP1, по ссылке http://aspnet.codeplex.com/releases/view/54273 - для .NET 4.0.

Заключение

Кто-то в твиттере после моего выступления написал, что по мнению докладчика (то бишь меня), Dynamic Data - это мертвая технология. Я, конечно, же такого не говорил, а наоборот, хотел подчеркнуть ее главное преимущество - простоту при работе с базами данных и простое создание data-driven приложений. Конечно, MVC - отличная технология, но "въехать" в нее людям, которые не сталкивались с MVC ранее, достаточно сложно. В этом я убедился, когда пообщался с некоторыми людьми на MSSWIT. Поэтому я не стал бы ее списывать со счета, а посоветовал бы обратить внимание на Dynamic Data как альтернативу MVC если у вас задача не выходит за рамки чего-то не очень сложного и у вас на реализацию нет много времени.

Ссылки и дополнительные материалы

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии