DataAnnotations против IDataErrorInfo
Плюсы и минусы обоих? Преимущества одного перед другим? (особенно в отношении MVC)
DataAnnotations против IDataErrorInfo
Плюсы и минусы обоих? Преимущества одного перед другим? (особенно в отношении MVC)
Позднее вступление в обсуждение, так как не хочу начинать новый вопрос. Я исхожу из того, чтобы определить, как лучше всего применять к проекту ASP.NET MVC среднего размера.
Позвольте мне сначала резюмировать наши варианты: -
1) IDataErrorInfo просто реализовать. Все, что вам нужно, это получить IDataErrorInfo в вашем классе модели. Загвоздка в том, что вы позволяете привязке модели обеспечивать соблюдение ваших бизнес-правил. Модель должна обеспечивать соблюдение бизнес-правил. Другой уловкой для IDataErrorInfo (и аналогично для DataAnnotations) является то, что (перефразируя из Книга Стивена Сандерсона, он не мог сообщить о множественных ошибках, относящихся к одному свойству, или множественных ошибках, относящихся к объектной модели в целом.
2) DataAnnotation для меня похожа на проверку схемы (валидацию). Это первая проверка, которую должно выполнить ваше приложение. Однако (IMHO) он не подходит для реализации ваших бизнес-правил.
3) Реализуйте свой собственный ModelBinder. Хотя это можно сделать, но если серьезно, то использование ModelBinder заключается в анализе и привязке ваших данных к вашей модели, а не для выполнения сложных валидаций и проверок бизнес-правил. Я бы оставил проверку бизнес-правил для реализации на уровне модели / домена.
4) Сделайте свой собственный - Проверка с помощью уровня обслуживания (см. this. Преимущество показанного примера состоит в том, что он отделен от состояния контроллера и модели с помощью класса интерфейса. Другой вариант - создать соответствующее исключение на уровне модели. Последний вариант полезен при реализации уровня обслуживания. в отдельном приложении (например, приложении WCF).
Что вы думаете? Какие из вышеперечисленных вариантов вы использовали (или собираетесь принять) для проекта среднего и большого размера и почему?
Ваше здоровье
Похоже, DataAnnotations получают официальную поддержку в MVC 2.0. Скотт Гатри опубликовал товар статья о проверке модели в версии 2.0 с помощью DataAnnotations. Учитывая, что команда, похоже, движется в этом направлении, вы можете считать, что голосование в ее пользу.
DataAnnotations проще реализовать, и они получают прямую поддержку в MVC 2.0.
Однако IDataErrorInfo
позволяет выполнять более сложную проверку (например, проверку, которая порождает несколько свойств и т. Д.).
Однако их можно смешивать и использовать вместе. Вам ничего не мешает применить оба метода.