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