2010-02-01 7 views

Antwort

8

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

+0

Vielen Dank Veton. Der letzte Teil den du erwähnt hast habe ich total vermisst. –

+6

Ich kann nicht verstehen, wie die Ressourcendateien benannt werden sollten (und wo platziert), um ResourceManager von DataAnnotations.dll zu überschreiben. – wRAR

6

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.

+3

Wahr. Aber gibt es eine Möglichkeit, die Standardnachricht auf einmal zu ersetzen? –

+1

@FitzchakYitzchaki Hast du das jemals erreicht? –

Verwandte Themen