繁体   English   中英

该字段必须是数字

[英]The field must be a number

我有这个领域:

public decimal Price { get; set; } public decimal Price { get; set; }在数据库它是十进制(7,2)。

看法:

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

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

例如: 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格式。

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

是与全球化有关还是什么? 我该如何解决这个问题?

我发现的一种解决方案是覆盖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>

您可能希望使用[DisplayFormat]属性装饰您的字段,如下所示:

[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)]
public decimal Price { get; set; }

您必须使用[DataType(DataType.Currency)]标记您的属性。

[DataType(DataType.Currency)]
public decimal Price { get;set;}

您可能会在 mvc3 中找到带有十进制错误的答案- 该值对字段无效,它对我不起作用,所以我使用了这个临时

<div class="col-md-10">
            @{ Html.EnableClientValidation(false); }
            @Html.EditorFor(model => model.DecimalValue, new { htmlAttributes = new { @class = "form-control" } })
            @{ Html.EnableClientValidation(true); }
            @Html.ValidationMessageFor(model => model.DecimalValue, "", new { @class = "text-danger" })
        </div>

我在这里找到了这个ASP .NET MVC Disable Client Side Validation at Per-Field Level

我有同样的问题,我曾经用全球化库(globalize.js)解决它,但他们改变了它,所以它不包括本地化文件。 它应该从 cldr 库中获取它们,但我还没有弄清楚如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM