DataAnnotations vs IDataErrorInfo

DataAnnotations vs IDataErrorInfo

плюсы и минусы обоих? Преимущества одного над другим? (особенно связанные с MVC)

3 ответов


позднее вступление в дискуссию я не хочу начинать новый вопрос. Откуда я пришел, чтобы определить наилучшую практику для применения к среднему размеру ASP.NET проект MVC.

позвольте мне сначала обобщить наши варианты: -

1) IDataErrorInfo прост в реализации. Все, что вам нужно, это получить IDataErrorInfo в классе модели. Загвоздка в том, что вы позволяете привязке модели применять ваши бизнес-правила. Бизнес-правила должны соблюдаться Модель. Другой улов для IDataErrorInfo (а также для DataAnnotations) заключается в том, что (перефразируя из книга Стивена Сандерсона он не может сообщить о нескольких ошибках, связанных с одним свойством или несколькими ошибками, относящимися к объектной модели whle.

2) DataAnnotation для меня, как проверка схемы (проверка). Это первая проверка, которую должно сделать ваше приложение. Однако (IMHO) он не подходит для реализации ваших бизнес-правил.

3) осуществлять свой ModelBinder. Хотя это можно сделать, но серьезно говоря, использование ModelBinder заключается в анализе и привязке данных к вашей модели, а не в выполнении сложных проверок и проверок бизнес-правил. Я бы оставил проверку бизнес-правил для реализации на уровне модели / домена.

4) сверните свою собственную проверку со слоем сервиса (см. этой. Показанный пример имеет свое преимущество отделять от регулятора и состояния модели используя интерфейс класс. Другой вариант-создать соответствующее исключение из слоя модели. Последний вариант полезен при реализации уровня сервиса в отдельном приложении (e.g приложение WCF).

Что вы думаете? Для проекта среднего и большого размера, какой из вышеперечисленных вариантов вы использовали (или намерены принять) и почему?

Ура


похоже, что DataAnnotations получают официальную поддержку в MVC 2.0. Скотт Гатри опубликовал хорошая статья при выполнении проверки модели в 2.0 с использованием DataAnnotations. Учитывая, что команда, похоже, движется в этом направлении, вы можете считать, что голос в ее пользу.


DataAnnotations легче реализовать и получить прямую поддержку в MVC 2.0.

однако, IDataErrorInfo позволяет выполнять более сложную проверку (т. е. проверку, которая порождает несколько свойств и т. д.).

эти два могут быть смешаны и использованы вместе, однако. Ничто не мешает вам применять обе техники.