Я широко использую проверку аннотаций данных в ASP.NET MVC 2. Эта новая функция была огромной экономией времени, так как теперь я могу определить как проверку на стороне клиента, так и проверку на стороне сервера в одном месте. Тем не менее, пока я проводил детальное тестирование, я понял, что для кого-то довольно легко обойти проверку на стороне сервера, если я полагаюсь только на проверку аннотации данных. Например, если я определил требуемое поле, аннотируя свойство с атрибутом [Обязательный] и поместив текстовое поле для этого обязательного поля в форме, пользователь может просто удалить текстовое поле из DOM (которое легко можно сделать через Firebug) и теперь валидация аннотации данных не будет активирована в этом свойстве во время ModelBinding внутри Контроллера. Чтобы убедиться, что «требуемая» проверка активирована, я могу повторить проверку после ModelBinding, но тогда я бы повторил свою логику проверки.ASP.NET MVC: достаточно ли проверять аннотацию данных?
Какая рекомендация по проверке? Является ли проверка аннотации данных достаточной? Или нужно повторить проверку, чтобы убедиться, что проверки активируются во всех ситуациях?
Последующая деятельность Комментарий: Основываясь на ответах ниже, кажется, что я не могу полагаться на проверки модели Binder и аннотаций данных в одиночку. Поскольку мы заключаем, что требуется дополнительная проверка на стороне сервера, существует ли простой способ для моего уровня сервиса инициировать проверку на основе того, что было определено в аннотации данных? Похоже, что это даст нам лучшее из обоих слов ... нам не нужно будет повторять код проверки, но мы по-прежнему будем гарантировать, что проверка будет выполнена, даже если модель Binder не вызывает ее.
Я собираюсь опубликовать этот последующий комментарий в качестве отдельного вопроса, поскольку он представляет собой другой вопрос, кроме оригинального.
ответ Koritnik в ответ на ваш следить за запрос. Я делаю свою проверку аналогично тому, как он писал. Такое же определение DataAnnotation может использоваться как для проверки сервера, так и для клиента. –
Проверка аннотации данных прекрасна, если вам необходимы подходящие атрибуты проверки и сама структура. Поведение с Обязательным было изменено для RTM-среды ASP.NET MVC 2 из-за обратной связи с сообществом, поэтому [Обязательный] теперь работает так, как вы ожидали. Оптимально, проверьте: блок проверки (корпоративная библиотека), xVal, NHibernate Validators (предположительно не имеет зависимости от ORM NHibernate). – miha
'' Я собираюсь опубликовать этот последующий комментарий в качестве отдельного вопроса, поскольку он представляет собой другой вопрос, чем оригинальный ».« Ссылка на это не будет плохой идеей, а? – Sinjai