Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET Core中实现自定义模型验证?_C#_Asp.net Core_Asp.net Core Mvc_Asp.net Core 1.0 - Fatal编程技术网

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

C# 如何在ASP.NET Core中实现自定义模型验证?,c#,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,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 val

在以前版本的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");
        }
    }
}
公共类BestModelEver:IValidatableObject{
公共日期时间?生日{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext){
如果(生日.HasValue){
返回新的ValidationResult(“此处显示错误消息”);
}
}
}

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

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

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

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

我在他们的文档中寻找一个自定义验证部分,但看起来我没有找到。谢谢