si quelqu'un a beaucoup d'expérience en utilisant [C#] FluentValidation et a des idées pour la question ci-dessous toute aide serait très appréciée.Validez 2 listes en utilisant FluentValidation
J'ai 2 listes génériques (les deux avec le type de données string) - "Name" et "Url". Ils ont tous deux la même quantité d'éléments, donc les éléments indexés correspondent, c'est-à-dire, Names [0] est en corrélation avec Urls [0].
Le seul problème que j'ai est de valider des éléments vides dans chaque liste. Les règles dont j'ai besoin sont:
si un élément est vide dans Name [2] alors Url [2] ne doit pas être vide. si un élément est vide dans Url [2], Name [2] ne doit pas être vide. si elles sont toutes deux vides alors nous ne voulons pas valider, nous voulons ignorer.
Note: Je l'ai utilisé l'indice 2 dans l'exemple ci-dessus, mais il pourrait être quelque chose
Jusqu'à présent, j'ai:
RuleFor(f => f.Names).Must(d => d.All(s => !String.IsNullOrEmpty(s)))
.WithMessage("Names cannot be empty.")
RuleFor(f => f.URLs).Must(urls => urls.All(s => !String.IsNullOrEmpty(s)))
.WithMessage("URLs cannot be empty.")
Cela permet de vérifier qu'aucun élément sont vides ni sur la liste, cependant je dois pouvoir ne pas valider les éléments pour être vide dans une liste si l'élément corrélant dans l'autre est également vide (si les deux sont vides alors nous voulons juste l'ignorer).
Des idées?
Merci beaucoup de l'avoir posté. Je tirais mes cheveux. Cela fonctionne très bien si vous validez que la case à cocher a été cochée: 'RuleFor (x => x.AvailableCompanies) .Must ((f, d) => {return d.Find (h => h.Checked == true)! = null;}). WithMessage ("Veuillez sélectionner au moins une société") ' – brenjt