MVC3编辑十进制字段和本地化

时间:2011-11-12 00:43:10

标签: asp.net-mvc asp.net-mvc-3 localization number-formatting

我的语言环境使用逗号,,而不是小数点.

在MVC3中,当我打开一个编辑视图,其中小数值显示为

@Html.EditorFor(model => model.MyDecimalVal)

值正确显示。

当我用逗号输入值时,我收到错误“值不是数字”,如果我用点输入值,我没有错误,但实际上没有保存任何值。

如何处理这种情况?

2 个答案:

答案 0 :(得分:18)

This blog post建议覆盖默认的jQuery验证数字和范围规则,以便支持逗号小数分隔符的客户端支持。

  

要解决这些问题,我们可以从中获取默认实现   范围()和数字()函数的jquery.validate.js文件。我们   然后创建另一个.js文件(比如jQueryFixes.js),我们在其中   使用包含支持的函数覆盖这些默认函数   逗号作为小数分隔符。该文件的内容应该是   像这样的东西:

$.validator.methods.range = function (value, element, param) {
    var globalizedValue = value.replace(",", ".");
    return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}

$.validator.methods.number = function (value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}

答案 1 :(得分:6)

通过调整验证逻辑来​​解决这个问题已经解释过,所以这里有一个不同的方法。

如果要将文化设置为<system.web>,请将以下代码放在en节点下的web.config文件中。它将处理小数分隔符:

<globalization culture="en-US" uiCulture="en" />

我不确定但是对于DateTime,您仍然绑定到服务器的区域设置。