0

我有一个复杂属性的类:从验证中排除特定属性。 FluentValidation

public class A{ 
    public B Property{ get; set; } 
} 

public class B{ 
    public string Name{ get; set; } 
} 

在某些情况下,我只用B型,而在另一种类型。但我想验证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

“B”“A的一部分”不会运行,除非您告诉它。

B验证作为A的一部分........只会在您提出要求时才会发生。

下面我通过一个bool标志来演示“B作为A的一部分”作为可选项。

public class AValidator : AbstractValidator<A> 
{ 
    public AValidator (bool includeBasAPartOfA) 
    { 

      if(includeBasAPartOfA) 
      { 
        RuleFor(x => x.Property).SetValidator(new BValidator()); 
      } 

    } 
}