Ну метод bool IsValid
просто добавить ошибку в 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);
}
}