2010-09-21 1 views
20

wenn ich dekoriere die Eigenschaften meiner Viewmodel mit Attributen wie folgt aus:localize Daten Anmerkungen Standardmeldungen ([Erforderlich] [StringLength] etc.)

public class Vm 
{ 

[Required] 
[StringLength(35)] 
public string Name {get;set;} 

} 

I Englisch Prüfungsmeldungen werden bekommen:

Wie könnte ich sie übersetzen?

+0

ich meine hier beschriebene Ansatz: http://stackoverflow.com/questions/19398691/ mvc-localisation-from-the-database-das-deckt-alle-messages-required-displayna –

Antwort

36

Sie konnten die ErrorMessageResourceName Eigenschaft:

[Required(ErrorMessageResourceName = "SomeResource")] 
[StringLength(30, ErrorMessageResourceName = "SomeOtherResource")] 
public string Name { get; set; } 

Sie this blog post für ein Beispiel Kasse können.


UPDATE:

In Application_Start:

DefaultModelBinder.ResourceClassKey = "Messages"; 

Und in der Messages.resx Datei, die Sie benötigen, um die benutzerdefinierten Fehlermeldungen hinzuzufügen. Verwenden Sie Reflector, um die Baugruppen System.Web.Mvc und System.ComponentModel.DataAnnotations anzuzeigen, um die zu verwendenden Schlüsselnamen anzuzeigen.

+2

ich würde li Ke, um die Standardnachrichten zu ändern, ohne es für jede Eigenschaft zu spezifizieren, sah ich einmal, dass Sie eine Nachrichten.resx in Ihrer App_GlobalResources haben müssen, aber ich kenne die Schlüssel für jede Nachricht nicht – Omu

+0

Bitte sehen Sie mein Update. –

+0

@Darin Dimitrov können Sie mir bitte genauer sagen, wo in System.Web.Mvc zu sehen – Omu

9

Es gibt eine viel bessere Lösung mit asp.net MVC 3 in diesen Tagen jemand sucht einen neueren und weitaus besseren Ansatz.

http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

Zum Beispiel:

public class UserViewModel 
{ 
    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))] 
    [LocalizedDisplayName(ErrorMessageResourceName = "UserId", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))] 
    [LocalizedDescription(ErrorMessageResourceName = "UserIdDescription", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))] 
    public int Id { get; set; } 
} 

SO verwandte Frage - Mvc 3.0 DataAnnotations Localization

+0

down voter, bitte erläutern Grund für Ihre Aktion. –