Как реализовать выборочную проверку модели в ASP.NET Core?

В предыдущих версиях ASP.NET MVC способ добавления пользовательской проверки в вашу модель был путем реализации IValidatableObject и реализации вашего собственного метода Validate(). В качестве примера:

public class BestModelEver : IValidatableObject {
    public DateTime? Birthday { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
        if (Birthday.HasValue) {
            yield return new ValidationResult("Error message goes here");
        }
    }
}

Является ли это еще рекомендуемым способом добавления пользовательской проверки в модель в ASP.NET Core? Использование IValidatableObject принимает зависимость System.ComponentModel.DataAnnotations.

Ответы

Ответ 1

Существует два способа проверки пользовательской модели в ядре ASP.NET:

  • Пользовательский атрибут, подклассифицированный из ValidationAttribute. Это полезно, если вы хотите применить пользовательскую бизнес-логику к определенному свойству модели с атрибутом.
  • Реализация IValidatableObject для проверки на уровне класса. Используйте это вместо этого, когда вам нужно сделать валидацию на всей модели сразу.

В документации есть примеры того и другого. В вашем случае IValidatableObject, вероятно, будет лучшим подходом.