← Volver al blog

C# FluentValidation: validadores personalizados con mensajes de error dinámicos

Publicado el
1 min de lectura
--- vistas

Enlace del proyecto: [FluentValidation Custom Validators]

Artículo útil si quieres personalizar tu validación (por ejemplo, enlazar parámetros a tu mensaje de error): [link]

Aquí tienes un ejemplo de un validador personalizado con mensajes de error que usan enlace de parámetros (gracias al usuario danludwig), de esta publicación de StackOverflow: [link]

public class IsProcessFileValid : PropertyValidator
{
    public IsProcessFileValid(): base({ValidationMessage}) {}

    protected override IsValid(PropertyValidatorContext context)
    {
        if (!IsProcessFileValid1(context))
            context.MessageFormatter.AppendArgument(ValidationMessage,
                Custom validation message #1);

        if (!IsProcessFileValid2(context))
            context.MessageFormatter.AppendArgument(ValidationMessage,
                Custom validation message #2);

        // ...etc

        return true;
    }

    private bool IsProcessFileValid1(PropertyValidatorContext context)
    {
        // logic
        return false;
    }

    private bool IsProcessFileValid2(PropertyValidatorContext context)
    {
        // logic
        return false;
    }

    // ...etc
}
public static class IsProcessFileValidExtensions
{
    public static IRuleBuilderOptions<T, object> MustBeValidProcessFile<T>
        (this IRuleBuilder<T, object> ruleBuilder)
    {
        return ruleBuilder.SetValidator(new IsProcessFileValid());
    }
}
public CreateProcessValidator()
{
    RuleFor(x => x.ProcessFile).MustBeValidProcessFile();
}

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min