1

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

class CustomValidator : ValidationAttribute
{

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

1 回答 1

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


}
于 2013-07-31T10:23:11.807 回答