classe à l'intérieur qui est responsable de la validation je règle simple:FluentValidation modifier un message d'erreur dans la fonction Must
RuleFor(u => u.Id)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("Id is required")
.Must(ValidateId);
et ci-dessous est ma fonction ValidateId
:
private bool ValidateId(CreateAccountBindingModel model, string id, PropertyValidatorContext context)
{
if (id=="test")
{
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("You are testing");
return false;
}
var idValid = IdValidator.IsValid(id);
if (!idValid)
{
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("Id is invalid");
return false;
}
return true;
}
Si je lance mon validateur je reçois erreur par défaut, pas mes erreurs personnalisées Je spécifie dans ma fonction.
J'ai essayé de les mettre à l'aide:
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("Id is invalid");
mais sans aucune chance. Comment puis-je définir un message d'erreur dans la fonction de validation?
@ AlekseyL.sorry pour une réponse si tardive. J'ai créé une extension qui me permet d'appeler 'OnFailure' pour chaque règle. J'ai posté mon code dans le dépôt FluentValidation (https://github.com/JeremySkinner/FluentValidation/issues/299#issuecomment-233904267) et j'attends l'avis de Jeremy. J'ai implémenté cette solution dans mon projet et cela fonctionne bien, mais j'aimerais que l'auteur l'examine avant de l'afficher ici. Peut-être que vous pourriez le regarder? – Misiu
Je pense que ce n'est pas lié à cette question .. –
@AlekseyL. Désolé pour ça. J'ai pris des questions. Ce lien est lié à http://stackoverflow.com/questions/38436630/fluentvalidation-logonfailure-override – Misiu