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

Jus*_*son 26 c# asp.net-core-mvc asp.net-core 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");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这仍然是向ASP.NET Core中的模型添加自定义验证的推荐方法吗?使用依赖IValidatableObjectSystem.ComponentModel.DataAnnotations依赖.

Nat*_*ini 25

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

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

文档包含两者的示例.在你的情况下,IValidatableObject可能是最好的方法.

  • 我在他们的文档中寻找自定义验证部分,但看起来我错过了它.谢谢! (3认同)