0

Я хотел бы знать, какой порядок срабатывания происходит, когда у вас есть свойство модели в приложении MVC, которое имеет свойства с помощью «Требуемой» аннотации данных, а затем также проверяется на использование валидатор JQuery, чтобы решить, требуется ли что-то по выбору пользователя. В моей текущей реализации кажется, что JQuery validator плагинhere берет на себя, когда пользователь взаимодействует с формой.asp.net MVC Порядок проверки операций

Таким образом, сценарий заключается в том, что я хочу, чтобы дата требовалась только при выборе определенного флажка. У меня есть требуемая данные аннотация на поле следующим образом:

[Required] 
public string SomeDate{get;set;} 

public bool? IsDateRequired {get;set;} 

Затем в файле JS с помощью Jquery валидатора плагина, я следующий

$("#signupForm").validate({ 
      rules: { 
       someDate: { 
        required: function() { 
                return isDateRequired; 
                }, 
       })}; 
} 

конечного результата, что SomeDate является требуется только тогда, когда isDateRequired истинно. Это то, что я хочу, я просто не уверен, что он настроен правильно.

Если у меня нет параметра DataAttribute 'Required', установленного на стороне Server Model и того же JS-кода, он никогда не запускает проверку. Это из-за того, что валидатор JQuery не устанавливает атрибут «обязательный» во входном теге?

+0

jQuery Validate - это проверка на стороне клиента. ** ** ** не предполагается «устанавливать атрибуты». Он просто отображает сообщения об ошибках и блокирует отправку формы на основе вашей настройки. – Sparky

+0

См. Эту страницу для основных руководств по использованию: http://stackoverflow.com/tags/jquery-validate/info – Sparky

+0

@Sparky ... не является атрибутом [Обязательный] данных на стороне клиента? – gcoleman0828

ответ

-1

Если вы добавили ненавязчивую-validation.js на страницу и применили проверку аннотации данных к классу модели, вам не нужно писать код jquery для проверки формы.

+0

Это было бы правдой, если бы это не было условной проверкой, но это основано на установке другого значения, поэтому атрибут Required не подходит для всех сценариев. Выполняя еще несколько исследований, похоже, что JQuery Validator не устанавливает требуемый атрибут, но когда я устанавливаю требуемую аннотацию, он устанавливается. Кроме того, я использую этот плагин http://jqueryvalidation.org/files/demo/ .. просто чтобы быть уверенным, что мы на одной странице. – gcoleman0828

0

Оказалось, что действие создания поля даты скрывает, что поле не получает подтверждения, даже если поле «требуется» на основе требуемого атрибута. Из-за этого оказалось, что дополнительные правила, добавленные в ViewModel, переопределяют аннотацию данных, на самом деле это именно то, как jquery.validatior обрабатывает скрытые поля. Это имеет смысл, так как вы, как пользователь, будете очень раздражены, если у вас были ошибки в вашем foem на полях, которые вы не могли видеть :)

Я думаю, я просто предположил, что это не было сделано под капотом для вас. Фактически вообще не было необходимости в дополнительных правилах.

Смежные вопросы