ASP.NET MVC 4中未翻译自定义的错误消息

我想翻译validation消息“字段日期必须是日期”。

我已将以下键添加到Global.asax的Application_Start()中

ClientDataTypeModelValidatorProvider.ResourceClassKey = "ModelBinders"; DefaultModelBinder.ResourceClassKey = "ModelBinders"; 

我在App_GlobalResources中创建了ModelBinders.resx,ModelBinders.nl.resx,ModelBinders.fr.resx。

我在.resx文件中添加了以下字符串资源(或翻译):

 Name Value ==== ===== FieldMustBeDate The field {0} must be a date. FieldMustBeNumeric The field {0} must be a number. PropertyValueInvalid The value '{0}' is not valid for {1}. PropertyValueRequired A value is required. 

当我提交日期字符串时,我将收到“FieldMustBeDate”的翻译。 当我提交无效日期(例如“01/01 / 201a”)时,我收到默认ModelBinders.resx中定义的“PropertyValueInvalid”的未翻译消息,而不是翻译…如何显示正确的翻译对于PropertyValueInvalid?

我将解释具体的客户端消息。 首先,在模型中设置资源:

  [Required(ErrorMessageResourceType = typeof(Resources.ModelBinders), ErrorMessageResourceName = "Required")] [Display(Name = "UserName", ResourceType = typeof(Resources.ModelBinders))] public string UserName { get; set; } 

其次,在控制器中覆盖线程文化,我从路径中获取,例如在Initialize方法中:

  protected override void Initialize(RequestContext requestContext) { string cultureInfo = requestContext.RouteData.GetRequiredString("cultureInfo"); System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(cultureInfo); System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(cultureInfo); base.Initialize(requestContext); } 

客户留言用英文

西班牙语客户留言

资源格式正确非常重要:ModelBinders.resx,ModelBinders.es-ES.resx,ModelBinders.en-US.resx ……别的,它对我很有用。 我希望这种方法能帮到你。