我的语言环境使用逗号,
,而不是小数点.
。
在MVC3中,当我打开一个编辑视图,其中小数值显示为
@Html.EditorFor(model => model.MyDecimalVal)
值正确显示。
当我用逗号输入值时,我收到错误“值不是数字”,如果我用点输入值,我没有错误,但实际上没有保存任何值。
如何处理这种情况?
答案 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
,您仍然绑定到服务器的区域设置。