2

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

4

2 回答 2

1

我找到了解决方案:

我为引用这篇文章的双值添加了一个自定义 ModelBinder ,但它不起作用。经过一些进一步的研究,我认识到,“双重”和“双重?” 是 2 种不同的类型,我只 ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder());在 Global.asax.cs 中调用了 DoubleModelBinder。所以我添加了这条线ModelBinders.Binders.Add(typeof(double?), new DoubleModelBinder());,现在,一切都可以与德语分隔符一起使用。

于 2013-08-16T17:12:42.957 回答
0

根据 MSDN 文章Supporting ASP.NET MVC 3 Validation with Non-English Locales

您可能需要进行以下更改

除了包括本地化方法脚本之外,您还必须确保将服务器上的当前语言环境设置为目标语言环境,以便正确使用任何服务器端消息(用于客户端和服务器端验证) .

通常在配置服务器时,会选择正确的区域设置作为操作系统安装的一部分。如果服务器未设置为正确的语言环境,请执行以下操作:

In the Windows Control Panel, open Regional and Language Options.

Select the Location tab

In the Current location list, select the target locale
于 2013-08-16T08:07:00.053 回答