Innenklasse, die für die Validierung verantwortlich ist habe ich einfache Regel:FluentValidation ändert Fehlermeldung in Must Funktion
RuleFor(u => u.Id)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("Id is required")
.Must(ValidateId);
und unten ist meine ValidateId
Funktion:
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;
}
Wenn ich meinen Validator laufen bekomme ich Standardfehler, nicht meine benutzerdefinierten Fehler, die ich in meiner Funktion festlege.
Ich habe versucht Einstellung mit ihnen:
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("Id is invalid");
aber ohne Erfolg.
Wie kann ich Fehlermeldung innerhalb der Validierungsfunktion definieren?
@ AlekseyL.sorry für solche späten Antwort. Ich habe eine Erweiterung erstellt, mit der ich für jede Regel 'OnFailure' aufrufen kann. Ich habe meinen Code in FluentValidation Repo veröffentlicht (https://github.com/JeremySkinner/FluentValidation/issues/299#issuecomment-233904267) und ich warte auf Jeremy Review. Ich habe diese Lösung in meinem Projekt implementiert und es funktioniert gut, aber ich würde gerne Autor Review dazu bekommen, bevor ich es hier poste. Vielleicht könntest du es dir anschauen? – Misiu
Ich denke, das ist nicht im Zusammenhang mit dieser Frage .. –
@AlekseyL. Das tut mir leid. Ich habe Fragen falsch verstanden. Dieser Link ist verwandt mit http://stackoverflow.com/questions/38436630/fluentvalidation-logonfailure-override – Misiu