【问题标题】:saving german numbers保存德国号码
【发布时间】:2013-08-17 03:34:24
【问题描述】:

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

【问题讨论】:

标签: asp.net globalization


【解决方案1】:

我找到了解决办法:

我为引用 this article 的双值添加了一个自定义 ModelBinder,但它不起作用。经过一些进一步的研究,我认识到,“双重”和“双重?”是 2 种不同的类型,我仅以 ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder());in Global.asax.cs 的形式调用了 DoubleModelBinder。所以我添加了ModelBinders.Binders.Add(typeof(double?), new DoubleModelBinder()); 行,现在,德语分隔符一切正常。

【讨论】:

    【解决方案2】:

    根据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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2021-12-05
      相关资源
      最近更新 更多