我有一个具有复杂属性的类:
public class A{
public B Property{ get; set; }
}
public class B{
public string Name{ get; set; }
}
在某些情况下,我只使用B型,而在其他情况下使用A型。但我想验证B类型本身但不验证B类型作为A类的一部分。
我写了那些验证器:
public class BValidator : AbstractValidator<B>
{
public BValidator()
{
RuleFor(x => x.Name).NotEmpty();
}
}
public class AValidator : AbstractValidator<A>
{
public BValidator()
{
RuleFor(x => x.A).Configure(x => x.ClearValidators());
}
}
它在我的观点中起作用。但是当我发布一个空B.Name的类时,ModelState无效。这是使ModelState有效的方法吗?
答案 0 :(得分:0)
“B”“A的一部分”不会运行,除非你告诉它。
B验证作为A ........的一部分,只有在您要求时才会发生。
下面我将“B作为A的一部分”作为可选项,通过bool标志进行演示。
public class AValidator : AbstractValidator<A>
{
public AValidator (bool includeBasAPartOfA)
{
if(includeBasAPartOfA)
{
RuleFor(x => x.Property).SetValidator(new BValidator());
}
}
}