SetCollectionValidator

SetCollectionValidator

亲爱的
我正在尝试使用SetCollectionValidator验证对象列表,并且列表计数可能包含0个对象或更多个对象,因此验证返回错误,直到列表中没有这样的项目为止

public class SCRequest
{
    public List<Attachment> Attachments { get; set; }
}

public class Attachment
{
    public int AttachmentId { get; set; }
    public string Name { get; set; }
    public string FileType { get; set; }
    public string FilePath { get; set; }
    public string FileUrl { get; set; }
}


现在用于验证ScRequest我执行以下操作

public SCRequestValidator()
{
    RuleFor(request => request.Attachments)
        .SetCollectionValidator(new AttachmentValidator());
}


为了验证附件,请执行以下操作

public AttachmentValidator()
{
    RuleFor(x => x.FileUrl)
        .NotNull()
        .WithMessage(ErrorMessage.B0001)
        .NotEmpty()
        .WithMessage("Not Allowed Empty");
}


当附件列表的对象为0时,我得到的不是Not Allowed Empty错误,我的问题是仅当列表具有值时才想验证列表。

我该如何解决?

最佳答案

您可以使用When()将规则/验证器设置为仅在某些情况下被调用。在您的示例中,代码将类似于:

public SCRequestValidator()
{
    When(request => request.Attachments.Any(), () =>
    {
     RuleFor(request => request.Attachments)
         .SetCollectionValidator(new AttachmentValidator());
    });
}


因此,如果没有附件,则不会设置CollectionValidator。

关于c# - fluentvalidation SetCollectionValidator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37408461/

10-12 00:01