那是验证视图出错了吧。你需要调用那个属性的重载实现显示的区域语言
可以自己自定义对应的AttributeAdapter解决这个问题。
例如自定义RequiredAttributeAdapter
/// <summary> /// Required /// </summary> public class LocationRequiredAdapter : RequiredAttributeAdapter { public LocationRequiredAdapter(ModelMetadata metadata, ControllerContext context, RequiredAttribute attribute) : base(metadata, context, attribute) { } public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() { return new[] { new ModelClientValidationRequiredRule(string.Format("{0}", this.ErrorMessage.Trans() )) }; } }
“this.ErrorMessage.Trans()”在我的项目里面就是把错误信息翻译成当前语言。
这方法也写太多代码了吧!我最后网上找到的方法只需要2行代码(不计写资源文件的)
protected void Application_Start() { //通过资源文件本地化默认的错误提示 ClientDataTypeModelValidatorProvider.ResourceClassKey = "资源文件名称"; DefaultModelBinder.ResourceClassKey = "资源文件名称"; } .resx资源文件 名称:FieldMustBeDate 值:你自定义显示的内容 名称:FieldMustBeNumeric 值:你自定义显示的内容 名称:PropertyValueInvalid 值:你自定义显示的内容 名称:PropertyValueRequired 值:你自定义显示的内容
参考这个的http://weblogs.asp.net/imranbaloch/localizing-default-error-messages-in-asp-net-mvc-and-web-form
@时光刺客: 嗯,确实你那方法挺好的。我们用那方法是因为我们的翻译不是使用资源文件。