从Custom Validator访问ModelState

时间:2013-07-31 08:58:50

标签: asp.net-mvc validation modelstate

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

class CustomValidator : ValidationAttribute
{

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

1 个答案:

答案 0 :(得分:3)

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);
   }


}