MVC3: Wie ändere ich den generischen [Required] Validierungsnachrichtentext?

8

Wenn Sie die Eigenschaft eines Modellobjekts mit dem Required -Attribut dekorieren und nicht ErrorMessage oder ResourceType/Name angeben, erhalten Sie die Validierungsnachricht in der interpolierten Form "Das Feld {0} ist erforderlich.", wobei Parameter 0 ist der Wert des Attributs DisplayName dieser Eigenschaft.

Ich möchte diese Standardzeichenfolge in etwas anderes ändern, aber ich möchte die generische Art davon beibehalten, das heißt, ich möchte nicht ErrorMessage oder ResourceType/Name für jede Eigenschaft des Modellobjekts angeben. Wo ist der Standard-String gespeichert und wie kann ich ihn ändern?

    
Boris B. 25.04.2012, 13:58
quelle

2 Antworten

6

Die Ableitung Ihres eigenen Attributs ist eine faire Option und hat wahrscheinlich den geringsten Overhead, um loszulegen, aber Sie müssen zurückgehen und alle Ihre bestehenden Verwendungen von [Required] ändern. Sie (und alle anderen in Ihrem Team) müssen sich auch daran erinnern, das Richtige für die Zukunft zu verwenden (und Neulingen beizubringen).

Eine Alternative ist das Ersetzen von ModelMetadataProviders und ModelValidatorProviders , um Zeichenfolgen aus einer Ressourcendatei zurückzugeben. Dies vermeidet die obigen Nachteile. Es legt auch die Grundlage für das Ersetzen von Nachrichten für andere Attribute (z. B. MaxLengthAttribute ) und für die Unterstützung zusätzlicher Sprachen.

%Vor%

Hier ist die vollständige Quelle , Dokumentation und ein Blog post beschreibt die Verwendung.

    
David Ruttka 25.04.2012, 14:06
quelle
6

Haben Sie versucht, eine abgeleitete Klasse von RequiredAttribute zu erstellen und die FormatErrorMessage-Methode zu überschreiben? Dies sollte funktionieren:

%Vor%     
Joshua 25.04.2012 14:03
quelle