保存德国数字

时间:2013-08-16 07:32:29

标签: asp.net globalization

我有一个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”。在保存之前我是否要做些特别的事情?

2 个答案:

答案 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