“字段宽度必须是数字。”在客户端

时间:2010-12-29 09:20:45

标签: asp.net-mvc-3

我正在使用jquery进行客户端验证以及数据注释。一切正常,但我想在数字文本框中输入非数字值时本地化一条消息。但是对于客户端验证,asp.net mvc正在使用它自己的资源文件,其密钥为'ClientDataTypeModelValidatorProvider_FieldMustBeNumeric'。

我该怎么办?

感谢。

3 个答案:

答案 0 :(得分:2)

在本页末尾寻找解决方案:

http://jwwishart.wordpress.com/2010/03/22/custom-server-and-client-side-required-validator-in-mvc-2-using-jquery-validate/

我在我的MVC 3 RTM项目中检查过它,效果很好。

答案 1 :(得分:2)

我有同样的问题,因为我是意大利语,这里十进制数字用逗号而不是点格式化。那么,在美国,1,000.12这里写的是1.000,12。 经过一番搜索,我就是这样解决的: MVC3已经包含脚本jquery.validate.js / jquery.validate.min.js 那太棒了。

然后我添加了另一个脚本 - methods-it.js - 取自jquery validate plugin localization folder并改变了一点。

jQuery.extend(jQuery.validator.methods, {
    date: function (value, element) {
        return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
    },
    number: function (value, element) {
        return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
    },
    range: function (value, element, param) {
        var val = value.replace(",", "#").replace(".", ",").replace("#", ".");
        return this.optional(element) || (val >= param[0] && val <= param[1]);
    }
});

这个小代码处理日期(意大利格式),浮动数字和值范围。 它现在很棒! 不幸的是,这只是一个方向,而不是解决方案,因为必须针对每个区域进行纠正。

答案 2 :(得分:0)

我发现在视图模型上使用DataAnnotations更容易:

 [RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]