在以前的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
依赖关系。
答案 0 :(得分:23)
在ASP.NET Core中有两种方法可以进行自定义模型验证:
ValidationAttribute
的自定义属性。当您要将自定义业务逻辑应用于具有属性的特定模型属性时,这非常有用。IValidatableObject
。当您需要一次对整个模型进行验证时,请使用此选项。 documentation有两个例子。在您的情况下,IValidatableObject
可能是最好的方法。