简体   繁体   中英

Fluent validation to check list of objects Id's are not null or empty in C#

i have written one rule to check whether objects Id within list are not null or empty. But rule is not failing. Is any problem in here with my code?

NOTE: Id's are of string type.

RuleFor(x => x.MyListOfObjects).Must(x => x.All(x => !string.IsNullOrWhiteSpace(x.Id)))
                        .WithMessage("The Id should not be empty or null.");

Any pointers or suggestions are welcomed.

I've written the possible example for your code. Looks like everything is ok for your statement if you use fluent validation in the such way (please notice that if one item is "" or null check is still applied):

internal static class Program
        {
            static void Main(string[] args)
            {
                var list = new ListClass();
                var result = list.Validate();
    
                if(!result.IsValid) Console.WriteLine($"Error: {result.Errors.First()}");
            }
    
        }
    
        class ListClass
        {
            public List<Item> List = new List<Item>()
            {
                new Item {Id = "Empty"},
                new Item {Id = null},
                new Item {Id = ""},
            };
    
            private readonly Validator _validator = new Validator();
    
            public ValidationResult Validate() => _validator.Validate(this);
        }
    
        class Item
        {
            public string Id { get; set; }
        }
    
        class Validator : AbstractValidator<ListClass>
        {
            public Validator()
            {
                RuleFor(x => x.List).Must(x => x.All(x => !string.IsNullOrWhiteSpace(x.Id)))
                    .WithMessage("The Id should not be empty or null.");
            }
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM