0

DataAnnotationMVC の外部で、属性を使用してモデルのプロパティに検証を適用しています。

public class MyModel
{
    [Required]
    [CustomValidation]
    public string Foo { get; set; }
}

モデルを検証するために、次の拡張メソッドを実装しました。

public static void Validate(this object source)
{
    if (source == null)
        throw new ArgumentNullException("source");

    var results = new List<ValidationResult>();
    bool IsValid = Validator.TryValidateObject(source, new ValidationContext(source, null, null), results, true);
    if (!IsValid)
        results.ForEach(r => { throw new ArgumentOutOfRangeException(r.ErrorMessage); });
 }

Validate()便利ではないプロパティを設定するたびに、このメソッドを呼び出す必要があります。

MyModel model = new MyModel();
model.Foo = "bar";
model.Validate();

model.Foo = SomeMethod();
model.Validate();

Validate()モデルの状態が変化したときに、メソッドが裏で自動的に呼び出されるようにしたいと考えています。誰もこれを達成する方法についてアイデアを持っていますか?

ボーナス ポイントについては、MVC がこの自動検証をどのように達成するかを正確に知っている人はいDataAnnotationsますか?

ありがとう。

4

1 に答える 1