si alguien tiene mucha experiencia con [C#] FluentValidation y tiene alguna idea para la siguiente pregunta, cualquier ayuda sería muy apreciada.Validar 2 listas usando FluentValidation
Tengo 2 listas genéricas (ambas con cadenas de tipo de datos) - "Nombre" y "Url". Ambos tienen la misma cantidad de elementos, por lo que los elementos indexados coinciden, es decir, los nombres [0] se correlacionan con las URL [0].
El único problema que tengo es la validación de elementos vacíos en cada lista. Las reglas que necesito son:
si un elemento está vacío en Nombre [2], entonces la URL [2] no debería estar vacía. si un elemento está vacío en Url [2], entonces Nombre [2] no debe estar vacío. si ambos están vacíos, entonces no queremos validar, queremos ignorar.
Nota: He utilizado el índice 2 en el ejemplo anterior, pero podría ser cualquier cosa
Hasta ahora tengo:
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.")
Esto comprueba que no hay elementos están vacíos en ninguna de las listas, sin embargo, debo ser capaz de no validar elementos para estar vacío en una lista si el elemento correlativo en la otra también está vacío (si ambos están vacíos, entonces solo queremos ignorarlo).
¿Alguna idea?
Muchas gracias por publicar esto. Estaba tirando de mi cabello. Esto funciona muy bien si está validando que al menos en la casilla de verificación se ha marcado: 'RuleFor (x => x.AvailableCompanies) .Must ((f, d) => {return d.Find (h => h.Checked == true)! = null;}). WithMessage ("Seleccione al menos una compañía"); ' – brenjt