首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fluentvalidation SetCollectionValidator

fluentvalidation SetCollectionValidator
EN

Stack Overflow用户
提问于 2016-05-24 16:43:18
回答 1查看 2.1K关注 0票数 1

亲爱的,我正在尝试使用SetCollectionValidator验证对象列表,列表计数可能有0个或更多的对象,所以验证返回错误,直到列表没有这样的项目

代码语言:javascript
复制
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,我执行以下操作

代码语言:javascript
复制
public SCRequestValidator()
{
    RuleFor(request => request.Attachments)
        .SetCollectionValidator(new AttachmentValidator());
}

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

代码语言:javascript
复制
public AttachmentValidator()
{
    RuleFor(x => x.FileUrl)
        .NotNull()
        .WithMessage(ErrorMessage.B0001)
        .NotEmpty()
        .WithMessage("Not Allowed Empty");
}

当附件列表有0个对象时,我得到错误not Not Allowed Empty,我的问题是我只想在列表有值的时候验证它。

我怎么才能修复它呢?

EN

回答 1

Stack Overflow用户

发布于 2016-05-24 22:44:10

您可以通过使用When()将规则/验证器设置为仅在特定场景下调用。在您的示例中,代码将类似于:

代码语言:javascript
复制
public SCRequestValidator()
{
    When(request => request.Attachments.Any(), () => 
    {
     RuleFor(request => request.Attachments)
         .SetCollectionValidator(new AttachmentValidator());
    });
}

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37408461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档