Pasar el mensaje de error para la validación del lado del cliente

ado que no hay forma de validar una propiedad (con una discreta validación del lado del cliente) utilizando múltiples patrones de expresiones regulares (porque el tipo de validación debe ser único), decidí extender FluentValidation para poder hacer lo siguiente.

RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required")
                    .Length(3, 20).WithMessage("Name must contain between 3 and 20 characters")
                    .Match(@"^[A-Z]").WithMessage("Name has to start with an uppercase letter")
                    .Match(@"^[a-zA-Z0-9_\-\.]*$").WithMessage("Name can only contain: a-z 0-9 _ - .")
                    .Match(@"[a-z0-9]$").WithMessage("Name has to end with a lowercase letter or digit")
                    .NotMatch(@"[_\-\.]{2,}").WithMessage("Name cannot contain consecutive non-alphanumeric characters");



Lo último que necesito descubrir es cómo pasar el mensaje de error que se establece usandoWithMessage() viaGetClientValidationRules() por lo que termina en el atributo "data-val-customregex [SOMEFANCYSTRINGHERETOMAKEITUNIQUE]" en el elemento de entrada.

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) {
    var rule = new ModelClientValidationRule();
    rule.ErrorMessage = [INSERT ERRORMESSAGE HERE];
    rule.ValidationType = "customregex" + StringFunctions.RandomLetters(6);
    rule.ValidationParameters.Add("pattern", pattern);

    yield return rule;
}


He estado mirando el código fuente de FluentValidation, pero no pude resolverlo. ¿Alguien tiene alguna idea

Respuestas a la pregunta(2)

Su respuesta a la pregunta