Как проверить список Guid с помощью FluentValidation - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь проверить список Guid с помощью Fluid Validation.
В моем списке идентификаторов должен быть хотя бы один идентификатор Guid. Я провел некоторое исследование и нашел ответы на аналогичные вопросы, и самое близкое к нему решение реализовало его, как показано ниже, но оно все еще не работает. Когда я делаю запрос, даже если я отправляю список идентификаторов со значениями, он выдает мне сообщение об ошибке, что значение не может быть нулевым. Что я делаю не так?

    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();
        }
    }

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете просто цепочки валидаторов:

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 является структурой, вам не нужно использовать NotNull() проверку внутри GuidValidator:

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