Asp.net mvc ASP.NET Core 2.2未在IValidatableObject中激活验证方法

Asp.net mvc ASP.NET Core 2.2未在IValidatableObject中激活验证方法,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,我正在尝试进行一些自定义验证,但似乎无法启动验证方法。请让我知道我可能遗漏了什么。谢谢 以下是我的代码: 型号: public class TestModel : IValidatableObject { [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } public IEnumerable<ValidationR

我正在尝试进行一些自定义验证,但似乎无法启动验证方法。请让我知道我可能遗漏了什么。谢谢

以下是我的代码:

型号:

public class TestModel : IValidatableObject
{
   [Required]
   public string FirstName { get; set; }

   [Required]
   public string LastName { get; set; }

   public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
   {
      if (FirstName == "Hello")
           yield return ValidationResult.Success;
      else
           yield return new ValidationResult("Error from Validate method");
   }

}
我还尝试使用以下方法将验证器添加到单个属性,但也不会触发:

    public class MyValidator : ValidationAttribute
    {

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            return new ValidationResult("Hello");
        }

    }

IValidatableObject
是类级验证。模型绑定时,它将调用
Validate
方法来确定指定的对象是否有效。如果要激发验证方法,应将测试方法的参数类型更改为
TestModel
,如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Test(TestModel model)

IValidatableObject
是类级验证。模型绑定时,它将调用
Validate
方法来确定指定的对象是否有效。如果要激发验证方法,应将测试方法的参数类型更改为
TestModel
,如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Test(TestModel model)
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Test(TestModel model)