【发布时间】:2015-07-21 03:52:28
【问题描述】:
我有一个可以在多个地方重用的类。它应用了一个默认验证器,该验证器具有以下属性 [Validator(typeof(ChildValidator))]。
我想根据使用它的父类覆盖应用于子类的验证器。下面是我的模型的简化版本。因此,我想在 ChildValidator2 中应用规则,而不是使用 ChildValidator 验证 Child。这个可以吗?
注意:以下代码将始终无法通过验证,因为它将始终在 ChildValidator 中应用规则
型号:
[Validator(typeof(ParentValidator))]
public class Parent
{
public bool IgnoreChild { get; set; }
public DateTime Birthdate { get; set; }
public Child Children { get; set; }
}
[Validator(typeof(ChildValidator))]
public class Child
{
public string ChildProperty{ get; set; }
public DateTime Birthdate { get; set; }
}
验证器:
public class ParentValidator : AbstractValidator<Parent>
{
public ParentValidator()
{
RuleFor(model => model.Name).NotEmpty();
When(x=>x.IgnoreChild, () =>
{
RuleForEach(model => model.Child).SetValidator(new ChildValidator2());
});
}
}
public class ChildValidator : AbstractValidator<Child>
{
public ChildValidator()
{
RuleFor(model => model.ChildProperty).NotEmpty();
//Compare birthday to make sure date is < Parents birthday
}
}
public class ChildValidator2 : AbstractValidator<Child>
{
public ChildValidator2()
{
RuleFor(model => model.ChildProperty).Empty();
}
}
【问题讨论】:
-
“比较生日以确保日期是
标签: c# .net asp.net-mvc fluentvalidation