Я использую FluentHTML (из MvcContrib) для разметки моей HTML-разметки.Я хочу использовать ненавязчивую проверку клиента, предоставляемую библиотекой jquery.validate.У меня все работает правильно, кроме свойств вложенных ViewModels.Пример:
public class RegisterPageViewModel
{
[Required(ErrorMessage = "First Name cannot be empty.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name cannot be empty.")]
public string LastName { get; set; }
[Required(ErrorMessage = "Email cannot be empty.")]
[RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Invalid Email Format.")]
public string Email { get; set; }
[Required(ErrorMessage = "Password field cannot be empty.")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "You have to confirm your password.")]
[Compare("Password", ErrorMessage = "Passwords must match.")]
[DataType(DataType.Password)]
public string PasswordConfirm { get; set; }
[Required]
public AddressDto Address { get; set; }
public bool TermsOfUse { get; set; }
[Required(ErrorMessage = "Nickname is required")]
public string Nickname { get; set; }
public string MiddleName { get; set; }
[Required(ErrorMessage = "Birthdate is required")]
public string Birthdate { get; set; }
public string Phone { get; set; }
[Required(ErrorMessage = "Mobile number is required")]
public string Mobile { get; set; }
public string RakimMelieh { get; set; }
public string ReferralNickname { get; set; }
}
Он отлично работает для ВСЕХ свойств, кроме тех, которые находятся внутри свойства Address
, хотя я также украсил свойства AddressDto
атрибутами проверки:
public class AddressDto
{
public int Id { get; set; }
[Required(ErrorMessage = "Address Name is required.")]
public string Name { get; set; }
public string Country { get; set; }
public string District { get; set; }
public string City { get; set; }
public string Area { get; set; }
[Required(ErrorMessage = "Address Details are required.")]
public string Details { get; set; }
public bool IsDefault { get; set; }
}
То же самое происходит и с другими моделями представления, где внутри них есть вложенные модели представления.Одна вещь, которую я заметил при проверке полей ввода FireBug, состоит в том, что у них всегда есть класс valid
, даже когда они не действительно действительны (согласно аннотациям, украшающим их свойства).
Любые мысли, какЯ могу решить эту проблему?