Как реализовать проверку пользовательской модели в 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.


person Justin Helgerson    schedule 12.07.2016    source источник


Ответы (1)


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

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

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

person Nate Barbettini    schedule 12.07.2016
comment
Я искал раздел пользовательской проверки в их документах, но, похоже, я его пропустил. Спасибо! - person Justin Helgerson; 12.07.2016