【问题标题】:Exclude particular property from validation. FluentValidation从验证中排除特定属性。流利验证
【发布时间】:2016-11-26 15:56:32
【问题描述】:

我有一个具有复杂属性的类:

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 的 A 类时,ModelState 无效。是让ModelState有效的方法吗?

【问题讨论】:

    标签: validation model-view-controller fluentvalidation modelstate


    【解决方案1】:

    "B" "a part of A" 不会运行,除非你告诉它。

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

    下面我将“B 作为 A 的一部分”设为可选,通过 bool 标志进行演示。

    public class AValidator : AbstractValidator<A>
    {
        public AValidator (bool includeBasAPartOfA)
        {
    
               if(includeBasAPartOfA)
               {
                        RuleFor(x => x.Property).SetValidator(new BValidator());
               }
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多