Как реализовать выборочную проверку модели в 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
, вероятно, будет лучшим подходом.