如何在ASP.NET Core中实现自定义模型验证?

时间:2016-07-12 15:07:57

标签: c# asp.net-core asp.net-core-mvc asp.net-core-1.0

在以前的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 个答案:

答案 0 :(得分:23)

在ASP.NET Core中有两种方法可以进行自定义模型验证:

  • 来自ValidationAttribute的自定义属性。当您要将自定义业务逻辑应用于具有属性的特定模型属性时,这非常有用。
  • 为类级验证实现IValidatableObject。当您需要一次对整个模型进行验证时,请使用此选项。

documentation有两个例子。在您的情况下,IValidatableObject可能是最好的方法。