我想翻译验证消息“字段日期必须是日期。”
我已将以下键添加到 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”的未翻译消息,而不是翻译...我怎样才能显示正确的翻译对于 PropertyValue 无效?
我将解释如何特定客户消息。首先,在模型中设置资源:
[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 ...除此之外,它对我来说效果很好。我希望这个方法能够帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)