该字段必须是数字 [英] The field must be a number

查看:130
本文介绍了该字段必须是数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个字段:

public decimal Price { get; set; }在数据库中为十进制(7,2).

public decimal Price { get; set; } in Database it is decimal (7,2).

查看:

 @Html.EditorFor(model => model.Price, 
                 new { htmlAttributes = new { @class = "form-control" } })

如果我用逗号输入值,则MVC默认验证不接受,说:"The field must be a number". (我尝试使用正则表达式,但是没有办法)

If i put a value with comma, MVC default validation doesn't accept, says: "The field must be a number". (I tried use a Regex, but no way)

例如:5,00, 55,00 or 555,00

也是这样:

public DateTime date { get;set; }

查看:

 @Html.EditorFor(model => model.Date, 
                 new { htmlAttributes = new { @class = "form-control" } })

MVC默认验证不接受格式为dd/mm/yyyy的日期,仅接受mm/dd/yyyy的日期.

MVC default validation doesn't accept dates in format dd/mm/yyyy, only in mm/dd/yyyy.

例如:13/02/2015, 15/06/2013, 25/08/2012

全球化有什么吗?我该如何解决?

Is something with globalization or what? How can I solve this?

推荐答案

我发现的一个解决方案是覆盖jquery.validate.js

One solution I found was to override the validation functions of jquery.validate.js

<script>

    $.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);
    }
    //Date dd/MM/yyyy
    $.validator.methods.date = function (value, element) {
        var date = value.split("/");
        return this.optional(element) || !/Invalid|NaN/.test(new Date(date[2], date[1], date[0]).toString());
    }
</script>

这篇关于该字段必须是数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆