【问题标题】:Access ModelState from Custom Validator从自定义验证器访问 ModelState
【发布时间】:2025-12-03 05:55:02
【问题描述】:

如何从自定义验证器访问 ModelState 以添加错误?

class CustomValidator : ValidationAttribute
{

    public override bool IsValid(object value)
    {
       //access modelstate
    }
}

【问题讨论】:

    标签: asp.net-mvc validation modelstate


    【解决方案1】:

    bool IsValid 方法在返回 false 时只会在 ModelState 中添加一个错误。您不必直接管理 ModelState。

    如果您想要自定义消息,可以在 ctor 上进行。

    如果你想要更多的控制权,你可以覆盖ValidationResult IsValid( Object value, ValidationContext validationContext )

    class CustomValidator : ValidationAttribute
    {
        //custom message in ctor
        public CustomValidator() : base("My custom message") {}
        public override bool IsValid(object value)
        {
           return true;
        }
        //return a overriden ValidationResult
        protected override ValidationResult IsValid(
        Object value,
        ValidationContext validationContext) {
    
          var message = "ohoh";
          return new ValidationResult(message);
       }
    
    
    }
    

    【讨论】: