2010-02-27 1 views
24

Ich erstelle eine MVC-Webanwendung mit C#. Da die Seite mehrsprachig sein wird, habe ich meinen eigenen ResourceManager implementiert. Diese Klasse ist verantwortlich für das Abrufen der erforderlichen Ressourcen-Strings von einer Datenbank/einem Cache abhängig von der aktuellen Thread-Kultur und funktioniert bis jetzt gut.Verwendung von DataAnnotations ErrorMessageResourceName mit benutzerdefinierter Ressourcenlösung

Mein Problem ist, möchte ich die meine benutzerdefinierte ResourceManager-Lösung zu Validierungsfehlermeldungen abrufen, wenn zum Beispiel mit der Erforderlich Attribut für eine Eigenschaft. Kann das gemacht werden?

Antwort

49

Die RequiredAttribute ermöglicht ein verwenden custom resource manager:

[Required(
    ErrorMessageResourceType = typeof(CustomResourceManager), 
    ErrorMessageResourceName = "ResourceKey")] 
public string Username { get; set; } 

UPDATE:

Eine andere Möglichkeit ist Ihre benutzerdefinierte Attribute schreiben:

public class CustomRequiredAttribute : RequiredAttribute 
{ 
    public override string FormatErrorMessage(string name) 
    { 
     return YourCustomResourceManager.GetResource(name); 
    } 
} 
+1

Mein Resourcemanager ist wirklich eine individuelle Lösung und ist weder in MVC eingebunden, noch implementiert es irgendwelche Schnittstellen außer t Er einen, den ich geschaffen habe. Welche Änderungen sind erforderlich, damit mein ResourceHandler auf diese Weise verwendet werden kann? – Mats

+0

Bitte beachten Sie mein Update. –

+0

Ist noch etwas erforderlich, damit benutzerdefinierte Attribute funktionieren? Ich habe es versucht und es scheint nicht zu funktionieren. Muss ich meine eigene EditorForm-Methode erstellen, um den neuen Attributtyp zu verwenden? –