Estoy usando Fluent Validation en mi proyecto.
En mi ViewModel tengo una propiedad que es de tipo cadena, los valores válidos son solo cadenas que representan enteros positivos.
Así que creé un simple IntegerValidator
que verifica si la cadena se puede analizar en un entero. Esto funciona.
El problema es, ¿cómo agregar la regla de que debe ser un entero positivo? Me gustaría utilizar el Greater Than Validator existente, pero el encadenamiento a la regla de mi propiedad de cadena compararía como string
, no como un analizada int
. ¿Cómo lograr esto?Reglas de encadenamiento que dependen el uno del otro
muestra de lo que me gustaría hacer (tenga en cuenta la ToInt()
):
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
Esto realmente tiene sentido! Sin embargo, me pregunto cuál debería ser el papel de ToInt. Tal como lo veo, debe convertir un 'RuleBuilder' en un 'RuleBuilder ' y asegurarse de que el valor validado se convierta en 'int' en el momento de la validación. Pero ... la cadena de método debería devolver un 'RuleBuilder '. ¿Derecha? Entonces, debe haber una forma de ordenar reglas 'int' consecutivas (como' GreaterThan') para hacer una validación 'int', pero devuelve un' rulebuilder 'de cadena. Me temo que esto está más allá de las capacidades actuales de FluentValidation. –
@GertArnold: Bueno, el 'ToInt' no tiene demasiado sentido, creo. De hecho, no me importa * cómo * va a funcionar, solo * que * puedo usar 'GreaterThan' y que una int se pasa a' GreaterThan'. –
Ok, mi punto principal es que en la mentalidad actual de Validación fluida puede ser un problema conceptual. –