viewModelのプロパティを次のような属性で装飾すると、次のようになります。
public class Vm
{
[Required]
[StringLength(35)]
public string Name {get;set;}
}
英語の検証メッセージを受け取ります:
"this field is required"
"The field Name must be a string with a maximum length of 35"
どうすればそれらを翻訳できますか?
ErrorMessageResourceName
プロパティを使用できます:
[Required(ErrorMessageResourceName = "SomeResource")]
[StringLength(30, ErrorMessageResourceName = "SomeOtherResource")]
public string Name { get; set; }
例として、チェックアウトすることができます このブログ投稿 。
更新:
Application_Start
:
DefaultModelBinder.ResourceClassKey = "Messages";
また、Messages.resx
ファイルに、カスタムエラーメッセージを追加する必要があります。 Reflectorを使用してSystem.Web.Mvc
およびSystem.ComponentModel.DataAnnotations
アセンブリを調べ、使用するキー名を確認します。
最近、誰かがより新しく、はるかに優れたアプローチを探している場合に備えて、asp.net MVC3を使用したはるかに優れたソリューションがあります。
http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/
例えば:
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関連の質問- Mvc 3.0 DataAnnotations Localization