Прежде всего : если вы используете проверку клиента, то первая проверка уже выполняется на стороне клиента с использованием JavaScript, но при проверке будут отображаться ошибки при вводе данных.
Второй из всех : ваши данные, отправляемые обратно в действие контроллера, проверяются в этой конкретной точке, пока ваше действие принимает параметр того же типа, что и ваш PartialView
в качестве типа модели.Если к этому типу (классу) прикреплены аннотации данных к свойствам, они проверяются.Конечно, вы должны также проверить наличие ошибок модели в вашем действии и действовать соответственно.
Перенаправление? Если бы вы предоставили еще немного кода своего действия контроллера, мы могли бы легче проверить, чтои предоставлю некоторую дополнительную помощь.
Как я справился с этой ситуацией
Я создал специальный фильтр действий, который проверяет ошибки состояния модели и возвращает 400 клиенту с описанием ошибки.Все мои вызовы Ajax обрабатывают success
, а также error
отвечают и действуют соответственно.
Проверьте код здесь (вопрос и решение) .
Фактическое решение
Это решение основано на дополнительной информации, полученной из комментариев ниже
Так что после обсуждения проблема на самом деле не является полной страницей посленазад, но подтверждение, которое не произошло вообще.Причина в том, что действие контроллера принимает параметр типа FormCollection
.Инфраструктура MVC вообще не знает, как проверять эти данные, поэтому проверка не происходит.
Изменение, которое вам нужно сделать, это изменить тип этого параметра, чтобы он соответствовал вашему представлению строгого типа.Если ваше представление имеет тип ViewPage<MyCustomType>
, тогда ваше действие HttpPost
, скорее всего, должно иметь параметр того же типа.
В общем случае тип действия может иметь параметры любого типа.Да, это может иметь еще больше параметров.Единственное ограничение заключается в том, что механизм связывания модели по умолчанию сможет связывать опубликованные данные с этими параметрами.Это то место, куда вы входите. Все, что вам нужно сделать, это правильно назвать свои параметры, а связыватель модели сделает все остальное.
Если вы столкнетесь с определенной ситуацией, когда это нелегко сделать, вы можетевсегда пишите пользовательскую привязку модели для определенного типа, и она будет полностью на вас, как анализировать опубликованные данные.