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 に答える