ASP.NET 核心 - 创建自定义模型验证

ASP.NET Core - Create custom model validation

在以前的 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 依赖性。

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

  • ValidationAttribute 继承class 的自定义属性。当您想要将自定义业务逻辑应用于具有属性的特定模型 属性 时,这很有用。
  • 为 class 级验证实施 IValidatableObject。当您需要一次对整个模型进行验证时,请改用它。

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