Ich verwende System.ComponentModel.DataAnnotations, um meine Modellobjekte zu überprüfen. Wie kann ich die Nachrichtenstandardattribute (Required und StringLength) ersetzen, ohne ihnen ein ErrorMessage-Attribut zu geben oder sie unterzuordnen?So ersetzen Sie Standard-DataAnnotations-Fehlermeldungen
Antwort
Schreiben neuer Beitrag, weil ich mehr Formatierung als Kommentare benötigen.
Blick auf Validation - Basisklasse von Validierungs Attribute.
Wenn Validierungsfehler aufgetreten, Fehlermeldung wird durch Methode erstellt werden:
public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}
Weiter Blick auf ErrorMessageString Eigenschaft:
:protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}
Property ResourceAccessor aus setted
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void
Zuerst wird es genau von den Klassen verwendet, um Nachrichten zu formatieren, zweitens - der Fall, wenn wir Fehlermeldung ErrorMessage Eigenschaft festlegen, und drittens - wenn Ressourcenzeichenfolgen verwendet. Je nach Ihrer Situation können Sie ErrorMessageResourceName verwenden.
wir Anderswo auf abgeleitete Konstrukteuren suchen, für unser Beispiel, Bereich Attribut:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}
Hier RangeAttribute_ValidationError aus Ressource geladen:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
So können Sie Ressourcendatei für verschiedene Bräune Standard Kultur und überschreiben Nachrichten dort, wie folgt:
http://msdn.microsoft.com/en-us/library/aa645513(VS.71).aspx
können Sie verwenden Errormessage Eigenschaft der Basisklasse Validation für alle DataAnnotations Validatoren.
Zum Beispiel:
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Vielleicht wird es helfen.
Wahr. Aber gibt es eine Möglichkeit, die Standardnachricht auf einmal zu ersetzen? –
@FitzchakYitzchaki Hast du das jemals erreicht? –
- 1. So ersetzen Sie XML-Sonderzeichen manuell?
- 2. So extrahieren, ändern und ersetzen Sie Daten?
- 3. So ersetzen Sie Sonderzeichen mit Regex
- 4. So ersetzen Sie Schrägstrich durch umgekehrten Schrägstrich
- 5. So ersetzen Sie alle '\' zu '/' in Nodejs
- 6. So ersetzen Sie Bruchlinien in Zweig
- 7. So ersetzen Sie link_to_function für Schienen 4.1
- 8. So ersetzen Sie Unicode-Zeichen durch ASCII
- 9. So ersetzen Sie SQL-Abfragezeichenfolge mit HashMap
- 10. C# So ersetzen Sie die Taskleistensymboluhr
- 11. So ersetzen Sie window.open (...) durch einen POST
- 12. So ersetzen Sie Datumsmuster in JavaScript-Zeichenfolge
- 13. So ersetzen Sie Spalten mit passendem Namen
- 14. So ersetzen Sie Cell-Wert zu TextFile
- 15. So ersetzen Sie Zeilenenden in VIM
- 16. So ersetzen Sie JavaScript-Prototyp mit benutzerdefinierter Funktion
- 17. So ersetzen Sie die Zeichenfolge in allen Dokumenten in Mongo
- 18. So ersetzen Sie document.write durch document.getElementById ('ElementID'). InnerHTML
- 19. So ersetzen Sie remoteFunction Anruf mit jquery Ajax Anruf
- 20. So ersetzen Sie eine Zeichenfolge an einer bestimmten Position
- 21. So ersetzen Sie eine Zeichenfolge durch eine andere in Haskell
- 22. So wählen und ersetzen Sie die ganze Seite mit jQuery
- 23. So ersetzen Sie Apps Dock-Symbol in Android
- 24. So aktualisieren Sie Entität durch Ersetzen in EF?
- 25. So ersetzen Sie Objekt-ID durch Alias in URL
- 26. So ersetzen Sie das Element durch ng-transclude
- 27. So ersetzen Sie den Text eines Absatzes mit OpenXML Sdk
- 28. So ersetzen Sie Hyperlink-Text in PDF mit ITEXT
- 29. So ersetzen Sie die Textzeichenfolge in einer Textdatei
- 30. So ersetzen Sie ausgewählte Zeilen mit den Plugins api
Vielen Dank Veton. Der letzte Teil den du erwähnt hast habe ich total vermisst. –
Ich kann nicht verstehen, wie die Ressourcendateien benannt werden sollten (und wo platziert), um ResourceManager von DataAnnotations.dll zu überschreiben. – wRAR