【问题标题】:Asp.Net MVC: Client data validation in double, with localizationAsp.Net MVC:双重客户端数据验证,本地化
【发布时间】:2012-09-07 08:13:07
【问题描述】:

我的 Asp.Net MVC 有一个小问题。

现在我已经开发了一个英文网站,一切正常,我所有的文本都已经本地化,而且我已经有了一个基于会话的系统。当我使用另一种语言(在我的情况下是法语)时,它会将 Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCulture 更改为从“fr”创建的文化信息。

我所有的翻译都有效,但我有一个问题。

在法国,小数部分与整数部分用“,”隔开。服务器验证可以很好地使用它并将“234,512”(并且也知道将“234.512”转换为双精度。

但是客户端验证不接受这个,它说:

"Le champ XYZ doit être un nombre."

所以它有正确的本地(因为消息被翻译成法语),但它似乎想要在“235,55”中编辑数字。

一开始我以为没什么大不了的,用户可以输入“234.512”格式的数字,但问题在于数据的版本,因为线程是法语,它用“234,512”填充模型”,而不是“234.512”,因此客户必须在每次更改时更改分隔符(如果他们不对此字段进行更改,则事件)否则他们会收到 client 验证错误(没有调用当我按下提交按钮时正在制作,我检查了几次)。

那么我应该怎么做才能让客户端验证脚本在当前语言环境中双重工作?

非常感谢!

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 localization globalization


    【解决方案1】:

    jquery.validate.js(或 jquery.validate.unobtrusive.js)似乎有问题,它只接受点作为分隔符。

    查看以下帖子以获取解决方案: http://www.mfranc.com/2011/07/05/jquery-valdiator-modyfing-decimal-separator/

    http://www.campusmvp.net/asp-net-mvc-3-and-the-coma-in-decimals/

    【讨论】:

    • jquery extends 选项非常漂亮。非常感谢你
    【解决方案2】:

    这是已知问题。 jquery 中的 Javascript 验证器除了点之外不允许任何东西。 最简单的方法是更改​​ jquery.validate.min.js(左右)或覆盖您的 cshtml 中的自定义验证器。在 jquery 内部它将是:

    // http://docs.jquery.com/Plugins/Validation/Methods/number
    number: function(value, element) {
        //return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); <-- original 
        return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:[\.,]\d+)?$/.test(value); 
    },
    

    【讨论】:

    • 感谢您的回答,但拉斐尔的解决方案是正确的
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多