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

Posted

技术标签:

【中文标题】如何在 ASP.NET Core 中实现自定义模型验证?【英文标题】:ASP.NET Core - Create custom model validation 【发布时间】:2016-07-12 15:07:56 【问题描述】:

在以前版本的 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 Core 中有两种方法可以进行自定义模型验证:

ValidationAttribute 子类化的自定义属性。当您想将自定义业务逻辑应用到具有属性的特定模型property 时,这很有用。 实施IValidatableObject 以进行类级验证。当您需要一次对整个模型进行验证时,请使用此选项。

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

【讨论】:

我在他们的文档中寻找自定义验证部分,但看起来我错过了。谢谢!

以上是关于如何在 ASP.NET Core 中实现自定义模型验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中实现自定义主体和身份?

在 ASP.NET 5 (vNext) MVC 6 中实现自定义路由器

如何在 WCF 服务中实现自定义身份验证

如何在 .NET EF Core 中实现自引用多对多关系

如何在 QT 中实现自定义模型的 removeRow() 函数?

在 TensorFlow 2.0 中实现自定义损失函数