5 Stimmen

Übergabe eines Wertes in die Fehlermeldung mit fließender Validierung

Ist es möglich, einen Wert in die Fehlermeldung einzugeben. Ich habe etwas Ähnliches versucht:

RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => String.Format(ValidationErrors.TooLong, "255"));

ValidationErrors ist meine Ressourcendatei, die Folgendes enthält:

TooLong Bitte verwenden Sie weniger als {0} Zeichen.

Dies:

RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => ValidationErrors.TooLong);

funktioniert gut.

6voto

Jeremy Skinner Punkte 1341

In der derzeit veröffentlichten Version von FluentValidation (v2) wird dies bei der Verwendung lokalisierter Nachrichten nicht unterstützt.

Das erste Argument von WithLocalizedMessage muss immer eine Ressourceneigenschaft bezeichnen - Sie können dort keinen beliebigen Code einfügen (z. B. einen Aufruf von string.format).

Wenn Sie eine nicht-lokalisierte Nachricht verwenden, können Sie dies tun:

RuleFor(x => x.Property).Length(1,255).WithMessage("Max number of chars is {0}", "255");

Sie können diesen Ansatz auch mit lokalisierten Fehlermeldungen ab FluentValidation v3 verwenden, aber es gibt noch keine Binärversion, so dass Sie, wenn Sie dies nutzen wollen, den Quellcode von der Projektseite herunterladen und erstellen können.

Alternativ können Sie anstelle von numerischen Platzhaltern auch die in FV eingebaute Unterstützung für benannte Platzhalter für die Standardvalidierer verwenden. Wenn Sie also .Length(1, 255) verwenden, können Sie {MaxLength} in Ihrer Fehlermeldung anstelle von {0} verwenden:

Bitte verwenden Sie weniger als {MaxLength} Zeichen.

...und FV ersetzt diesen automatisch durch den Wert, den Sie als Höchstwert eingegeben haben. Es gibt eine vollständige Liste aller benannten Platzhalter in der Dokumentation .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X