【问题标题】:How to validate a List of Guid using FluentValidation如何使用 FluentValidation 验证 Guid 列表
【发布时间】:2018-10-07 02:33:53
【问题描述】:

我正在尝试使用 Fluent Validation 验证 Guid 列表。
我的 Ids 列表应该至少有一个 Guid Id。我做了一些研究,发现类似的问题得到了回答,我最接近解决方案的方法是像下面那样实现它,但它仍然不起作用。当我发出请求时,即使我发送带有值的 ID 列表,它也会给我错误消息,即值不能为空。我做错了什么?

    public class Data
    {
        public List<Guid> Ids{ get; set; }
    }

    public class DataValidator : AbstractValidator<Data>
    {
        public DataValidator()
        {
            RuleFor(d => d.Ids).SetCollectionValidator(new GuidValidator());
        }
    }

    public class GuidValidator : AbstractValidator<Guid>
    {
        public GuidValidator()
        {
            RuleFor(x => x).NotNull().NotEmpty();
        }
    }

我也试过这个验证器,但没用:

    public class DataValidator : AbstractValidator<Data>
    {
        public DataValidator()
        {
            RuleForEach(d => d.Ids).NotNull().NotEmpty();
        }
    }

【问题讨论】:

    标签: c# .net-core fluentvalidation


    【解决方案1】:

    您可以只链接验证器:

    public class DataValidator : AbstractValidator<Data>
        {
            public DataValidator()
            {
                RuleFor(d => d.Ids)
                    .NotNull() //validates whether Ids collection is null
                    .NotEmpty() //validates whether Ids collection is empty
                    .SetCollectionValidator(new GuidValidator()); //validates each element inside Ids collection using GuidValidator
            }
        }
    

    另外,由于Guid 是一个结构,您不必在GuidValidator 中使用NotNull() 验证:

    public class GuidValidator : AbstractValidator<Guid>
        {
            public GuidValidator()
            {
                RuleFor(x => x).NotEmpty();
            }
        }
    

    【讨论】:

    • Guid.Empty 案例怎么样?
    • @BozoJoe GuidValidator 检查 guid 是否为空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多