У меня есть контактная страница Razor, реализованная в ASP. NET Core 2.0. Я использую привязку модели и пользовательскую проверку.
Если я использую пользовательскую проверку для отдельного класса модели, вызывается метод проверки. Если я использую пользовательскую проверку для свойства в PageModel, метод проверки не вызывается. Однако все свойства успешно связаны.
Вот класс PageModel и отдельный класс модели:
public class ContactModel : PageModel
{
[BindProperty]
public ContactMessageModel ContactMessageModel { get; set; }
[BindProperty, CustomValidation]
public string SomeData { get; set; }
public IActionResult OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
return RedirectToPage("MessageSent");
}
}
public class ContactMessageModel
{
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required, CustomValidation]
public string Message { get; set; }
}
Класс атрибута проверки теста выглядит следующим образом:
public class CustomValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return ValidationResult.Success;
}
}
Атрибут проверки вызывается для свойства ContactMessageModel.Message
, но не для свойства ContactModel.SomeData
.
Почему это так и как мне это исправить?