Я широко использую проверку аннотаций данных в ASP.NET MVC 2. Эта новая функция была огромной экономией времени, так как теперь я могу определить как проверку на стороне клиента, так и проверку на стороне сервера в одном месте, Тем не менее, пока я проводил детальное тестирование, я понял, что для кого-то достаточно просто обойти проверку на стороне сервера, если я полагаюсь только на проверку аннотации данных. Например, если я определил требуемое поле, аннотируя свойство с атрибутом [Обязательный] и поместив текстовое поле для этого обязательного поля в форме, пользователь может просто удалить текстовое поле из DOM (которое легко можно сделать через Firebug) и теперь валидация аннотации данных не будет активирована в этом свойстве во время ModelBinding внутри Контроллера. Чтобы убедиться, что "требуемая" проверка активирована, я могу повторить проверку после ModelBinding, но тогда я бы повторил логику проверки.
Какова рекомендация по проверке? Является ли проверка аннотации данных достаточной? Или нужно повторить проверку, чтобы убедиться, что проверки активируются во всех ситуациях?
Последующий комментарий: Основываясь на ответах ниже, кажется, что я не могу полагаться только на валидацию модели Binder и Data Annotation. Поскольку мы заключаем, что требуется дополнительная проверка на стороне сервера, существует ли простой способ для моего уровня сервиса инициировать проверку на основе того, что было определено в аннотации данных? Похоже, что это даст нам лучшее из обоих слов... нам не нужно будет повторять код проверки, но мы по-прежнему будем гарантировать, что проверка будет выполнена, даже если Model Binder не вызывает ее.
Я собираюсь опубликовать этот комментарий в виде отдельного вопроса, поскольку он задает другой вопрос, чем оригинальный.