2016-07-12 1 views
19

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

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.

ответ

15

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

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

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

+3

Я искал специальный раздел проверки в своих документах, но похоже, что я пропустил его. Благодаря! –