亲爱的
我正在尝试使用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/