asp.net-mvc – Asp.Net MVC:一些非本地化的默认错误消息?
我有一个完全本地化的网站,主要是法语/英语/德语.
现在,一切都进行得很好,但是我确实注意到asp.net MVC有一些错误信息的问题. 我的模型中有一个属性: [Required] [LocalizedDisplayName("PublicationDate",NameResourceType = typeof(LocalizationResources.Views.Composer.BaseInfoForm))] public DateTime PublicationDate { get; set; } LocalizedDisplayname是DisplayNameAttribute的扩展名,它在Resx文件中进行正确的翻译 线程CurrentCulture和CurrentCultureUI都在fr-FR中,所以消息应该以法语显示(就像我的[必需]属性一样),自动显示“Le champ Publication est requis”. 但是在DateTime的情况下,如果输入的日期不是日期,则验证器只会返回一个“asdfasdf”对于“出版”无效. >为什么MVC有时会以法语返回我的错误消息,有时以英文返回,以同样的形式(我确切地说,这是默认的错误消息) 非常感谢你 解决方法
我认为这两个问题回答你:
一个显着的区别是[必需]属性执行显式的客户端验证,而当您的字段不包含有效的DateTime时,您将通过缺省模型绑定器的失败获得服务器端验证,以从发布的方式创建一个DateTime对象表单数据.这是一个完全不同的机制,我猜这是不同的结果.当然,如果结果是一致的,那将是很好的.
有两种方式: >告诉默认模型binder使用DefaultModelBinder.ResourceClassKey属性为错误消息使用什么资源字符串.有关如何实现这一点的说明(对于MVC 2,但在MVC 3中没有改变),请参阅this related question的答案 [Required] [DataType(DataType.Date,ErrorMessageResourceType = typeof(MyLocalizedResources),ErrorMessageResourceName = "DateTimeFormatValidationMessage")] [LocalizedDisplayName("PublicationDate",NameResourceType = typeof(LocalizationResources.Views.Composer.BaseInfoForm))] public DateTime PublicationDate { get; set; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何使用resxresourcewriter写入所有三个值?
- asp.net-mvc – 如何使用启用了延迟加载的Automapper和EF4
- asp.net-mvc – 在新窗口中打开的DisplayFor DataType.Url的
- ASP.NET Web应用程序(.NET Framework)与ASP.NET核心Web应用
- asp.net-mvc – 应用程序每15分钟编译一次
- asp.net-mvc-5 – ASP.NET MVC 5 Identity 2 PasswordSignI
- asp.net-mvc-3 – 从Razor _Layout.cshml访问Session对象
- asp.net-mvc-3 – Asp.net mvc 3-获取当前控制器实例(不只是
- [译]ASP.NET Core 2.0 带初始参数的中间件
- ABP官方文档(一)【入门介绍】
- asp.net – VirtualPath位于当前应用程序根目录之
- asp.net-mvc-3 – EF 4.1上的MvcMiniProfiler代码
- asp.net-mvc-routing – ASP.NET Core 1.0中的属
- asp.net – Vs html
- asp.net – 强制按钮控制在回发之前运行其客户端
- asp.net-mvc – ASP.NET MVC身份默认实现
- asp.net-mvc-3 – 列中的MVC3 WebGrid自定义文本
- asp.net – 如何在网站项目中使用发布配置文件(.
- asp.net core 使用 AccessControlHelper 控制访问
- 如何使用IIS 6在asp.net中实现远期未来的过期标头