Я пытаюсь использовать проверку jQuery на форме в MVC2.Я использую: MicrosoftMvcJQueryValidation.js из проекта фьючерсов.
Когда форма загружается впервые, она предназначена для PresidentViewModel, и есть три поля, которые проверяются на соответствие.Для них проверка работает идеально.
Пользователь может щелкнуть ссылку, которая загружает в 3 дополнительных обязательных поля Ajax, представленный классом ContactViewModel.
У меня это работает, поэтому инфраструктура MVC отправляет обратно правильные window.mvcClientValidationMetadata данные в браузер и __ MVC_EnableClientValidation и __ MVC_CreateValidationOptions для вновь добавленных полей вызываются функции.
Однако при нажатии кнопки подтверждения проверяются только первые 3 поля.
Используются следующие модели:
public class RepresentativeViewModel
{
[HiddenInput(DisplayValue=false)]
public int Id { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Telephone is required")]
public string Telephone { get; set; }
[Required(ErrorMessage = "Website is required")]
public string Website { get; set; }
public IEnumerable<ContactViewModel> ContactList { get; set; }
}
public class ContactViewModel
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
public int RepresentativeId { get; set; }
public RepresentativeViewModel Representative { get; set; }
[Required(ErrorMessage="First Name is required")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
public string LastName { get; set; }
[Required(ErrorMessage = "Job is required")]
public string JobTitle { get; set; }
}
После небольшой отладки я нашел это в jquery.validate:
// check if a validator for this form was already created
var validator = $.data(this[0], 'validator');
if ( validator ) {
return validator;
}
кажется, что после загрузки дополнительных полей через ajax, валидатор, связанный с формой, никогда не будетбыть обновленным.Если я закомментирую строку:
return validator;
, тогда будут проверяться только новые поля.
Как получить как исходные, так и новые поля для проверки, когда пользователь нажимает на кнопку отправить