我有一个ASP.NET MVC 4应用程序和一个绑定到该模型的视图。我使用globalize.js进行全球化,并且我还扩展了jQuery验证,例如:
<script type="text/javascript">
$.validator.methods.number = function (value, element) {
return this.optional(element) ||
!isNaN(Globalize.parseFloat(value));
}
</script>
<script type="text/javascript">
jQuery.extend(jQuery.validator.methods, {
range: function (value, element, param) {
//Use the Globalization plugin to parse the value
var val = $.global.parseFloat(value);
return this.optional(element) || (
val >= param[0] && val <= param[1]);
}
});
</script>
因此使用“。”的视图可以正常使用德语数字。作为分组分隔符和“,”作为逗号分隔符。
我的问题是,当我通过提交表单保存视图时,调用控制器操作并且ModelState无效,因为所有数字都包含组“分隔符”。正在生成错误“数字不是有效数字”。只有逗号分隔符“,”的所有数字都有效。文化被设置为“de-DE”。在保存之前我是否要做些特别的事情?
答案 0 :(得分:1)
我找到了解决方案:
我为引用this article的双值添加了自定义ModelBinder,但它不起作用。经过一些进一步的研究,我认识到,“双重”和“双重”?是2种不同的类型,我在Global.asax.cs中仅将DoubleModelBinder调用为ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder());
。所以我添加了行ModelBinders.Binders.Add(typeof(double?), new DoubleModelBinder());
,现在,所有这些都适用于德语分隔符。
答案 1 :(得分:0)
根据MSDN文章Supporting ASP.NET MVC 3 Validation with Non-English Locales
您可能需要执行以下更改
除了包含本地化方法脚本外,您还必须制作 确保服务器上的当前区域设置设置为目标区域设置 所以任何服务器端消息(用于客户端和 将正确使用服务器端验证。
通常,在配置服务器时,会选择正确的区域设置作为其中一部分 操作系统安装。如果服务器未设置为正确 locale,执行以下操作:
In the Windows Control Panel, open Regional and Language Options. Select the Location tab In the Current location list, select the target locale