如何在 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 5 (vNext) MVC 6 中实现自定义路由器