MVC3 выборочно проверяет клиентскую сторону - PullRequest
1 голос
/ 25 марта 2011

Каждая форма в приложении имеет набор радиокнопок.После выбора нужно будет проверить только определенные поля, связанные с этой радиокнопкой.

Я использую MVC 3 и мне нужна проверка для работы на стороне клиента.

  1. Просто используя DataAnnotations, я могу проверить только все поля в форме.

  2. IValidatableObject не работает на стороне клиента.

  3. IClientValidatable выглядит так, как будто это может сделать работу, но, похоже, мне придется написать новый атрибут для каждой стандартной DataAnnotationАтрибут.

  4. RemoteValidation работает с одним полем за раз.

  5. Другой вариант - сбросить проверку MVC3 и сделать все это с помощью jQuery.У меня нет проблем с этим как таковым, но я хотел бы использовать MVC3 и сократить кодирование / обслуживание при подготовке к гораздо большему проекту.

  6. Могу ли я по-прежнему использовать проверку MVC3, но потомиспользовать jQuery для добавления / удаления полей проверки из проверки всякий раз, когда выбрана радиопереключатель?

Если кто-нибудь может помочь с некоторыми предложениями относительно наилучшего способа решения этой проблемы, это было бы очень полезно.

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

MVC 3 по умолчанию использует плагин проверки jQuery, и этот плагин не будет проверять отключенные поля. Поля, которые вы не хотите проверять, больше не нужны, если выбраны определенные переключатели? Если это так, то вы можете просто отключить эти элементы, и они не будут проверены (и обратите внимание, что эти отключенные поля также не будут опубликованы на сервере).

, например

$ ('input'). Attr ('disabled', 'disabled');

1 голос
/ 25 марта 2011

Для комплексной проверки лучше всего передать эти коды.Аннотации данных отлично подходят для 90% ваших потребностей в валидации, но не позволяют работать со сценариями What / If.

Для клиентской стороны используйте управляемую событиями пользовательскую валидацию, представленную через плагин валидации jQuery.Для сервера используйте атрибут CustomValidation:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v=vs.95).aspx

Использование IClientValidatable отлично подходит, если у вас есть настраиваемая проверка многократного использования, однако это потерянное время для однократной проверки.

В качестве альтернативы используйте RemotValidation с атрибутом CustomValidation, который делает недействительными несколько полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...