数据注释 + MVC3 + 文化问题

Posted

技术标签:

【中文标题】数据注释 + MVC3 + 文化问题【英文标题】:Data Annotations + MVC3 + Culture Issue 【发布时间】:2011-12-13 21:52:41 【问题描述】:

我在使用文化、MVC3 和数据注释时遇到问题。我在西班牙数据库(COLLATION is set for LATIN_GENERAL); 上定义了一个表STORES,其中一些字段在SQL 中定义为DECIMAL(18,2) NOT NULL。在我的 MVC3 应用程序中,我已经在 web.config 文件中为“es-ES”设置了文化。另外,我使用的所有视图都是强类型的。

如果我使用 DataAnnotations 进行验证,它会自动添加 Required fieldThe field must be a number 验证。这将是完美的,除了一件事:

The field must be a number 验证迫使我使用点(。)作为小数点分隔符,而不是逗号(,)。所以,我不知道如何更改它,也不知道如何翻译此错误消息。然后我想我可能会强迫用户在 jquery 中使用点而不是逗号(丑陋的解决方案)。所以,我这样做只是为了进行一些测试,结果是它允许我通过验证并在数据库中完美地创建了对象。

但奇怪的是,当我编辑同一个对象时,它显示在我的同一个强类型表单上,用逗号作为小数分隔符而不是点。所以有什么问题?用户永远不能提交对象的版本。

我做错了什么?

    向数据库添加了正确的排序规则。 在 web.config 文件中添加了全球化属性。 我什至试过这个MVC 3 jQuery Validation/globalizing of number/decimal field 没有成功...

执行此操作的正确方法是什么?

谢谢

【问题讨论】:

问题出现在客户端还是服务器端?即,回发是否在验证错误之前发生? 客户端。没有回发。验证错误是javascripted。我认为这与 jquery 如何处理小数分隔符有关。 老问题,但这对我有用:***.com/questions/5199835/… 【参考方案1】:

好吧,您可以关闭客户端验证,或者应用一些技巧,例如:

http://blog.brainnovative.com/2010/12/globalizing-aspnet-mvc-unobtrusive.html

【讨论】:

我按原样一步一步尝试破解您的链接,但我得到了 javascript 错误:“TypeError: Cannot read property 'es-ES' of undefined”...它是否适用你呢? @met.lord - 看起来事情发生了一些变化,所以你必须适应。你在这里下载了 jquery 全球化吗? github.com/jquery/globalize 我通过 NuGet 安装了它...然后从那里下载了文化文件 (github.com/jquery/globalize) @met.lord - 这篇文章好一点,描述了非侵入式验证的全球化。 afana.me/post/aspnet-mvc-internationalization-part-2.aspx 什么都试过了,发现有些方法改名了。所以我设法保持逻辑并尝试使用新方法,但没有成功让不显眼的验证在西班牙语上正常工作......

以上是关于数据注释 + MVC3 + 文化问题的主要内容,如果未能解决你的问题,请参考以下文章

MVC 3 为多元文化网站构建动态元关键字元描述功能

mvc 3 设置当前文化不变量

MVC3 中模型 DisplayFormat 的 DataFormat 错误

有文化的方式来索引每个元素都有解释的列表?

xUnit文化意识测试

这是啥错误? “无法添加数据连接。找不到任何适合指定文化或中性文化的资源。”