Пользовательская проверка запускается, если в классе модели, но не в свойстве страницы - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть контактная страница 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.

Почему это так и как мне это исправить?

...