1

如何防止调用IValidatableObject.Validate属性并仅为顶级模型调用它?

public abstract class Foo, IValidatableObject
{
    public virtual Foo Related { get; set; }

    public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        // This is first called for the 'Related' property 
        // and then for the model itself
        // I want this to be called for the top level model only
    }
}
4

1 回答 1

0

我不确定是否有更优雅的方法,但是创建一个覆盖 Foo 的 Validate 方法的新类呢?

就像是:


public class FooNoValidation : Foo
{
    public override IEnumerable Validate(ValidationContext validationContext)
    {
        yield break;
    }
}

当然,这需要 Foo 上的 Validate 方法是虚拟的,并且您需要在 Foo 父类上引用 FooNoValidation ,但可能会起作用。

我知道这有点小技巧,但如果你只需要让它工作,这应该可以实现。

于 2012-05-06T04:51:52.383 回答