如何阻止为属性调用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
}
}
答案 0 :(得分:0)
我不确定是否有更优雅的方式,但是如何创建一个覆盖Foo的Validate方法的新类呢?
类似的东西:
public class FooNoValidation : Foo
{
public override IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
}
当然这需要Foo上的Validate方法是虚拟的,你需要在Foo父类上引用FooNoValidation,但可能会有效。
我知道它有点像黑客,但如果你只是需要让它发挥作用,这应该会发生这种情况。