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
позволяет выполнять более сложную проверку (т. е. проверку, которая порождает несколько свойств и т. д.).
эти два могут быть смешаны и использованы вместе, однако. Ничто не мешает вам применять обе техники.