【问题标题】:"The decimal field must be a number"“十进制字段必须是数字”
【发布时间】:2015-10-01 16:41:22
【问题描述】:

我正在尝试为这个问题找到一个可能的简单解决方案。在网络上找到的所有解决方案都不适合我。我的模型中有一个价格字段,它可以是使用逗号的十进制值,例如 30,5。但验证返回一个错误“‘字段’必须是数字”。

我正在使用 MVC 中使用的默认验证,我认为它正在使用 jQuery。有什么办法可以避免这个问题?

型号代码为:

 [Range(0.0, Double.MaxValue, ErrorMessage = "Out of range")]
    [DataType(DataType.Currency)]
    public decimal Price { get; set; }

【问题讨论】:

  • 您确定可以使用逗号吗?而不是 dot?
  • 逗号。我的默认文化是 es-ES
  • 你设置了文化吗?我忘记了全球化是如何在 MVC-4 中运行的
  • 我没有设置文化。使用线程指令返回西班牙文化。
  • 所以,尝试使用 dot 可能 mvc 使用 InvariantCulture

标签: jquery asp.net-mvc-4


【解决方案1】:

我相信错误来自客户端验证,而不是服务器端。如果它确实到达了服务器,那么指定文化应该没问题。但是,ASP.NET 的不显眼验证实际上使用了 jQuery 验证插件,正如您在 documentation page for the number validator 处看到的,只有作为小数分隔符的 . 将被验证。您可能只需从字段中删除号码验证规则即可。

$("#Price").rules("remove", "number");

更新

这篇文章可能会对您有所帮助:http://blog.icanmakethiswork.io/2012/09/globalize-and-jquery-validate.html。它解释了如何从本质上对 jQuery Validation 进行猴子补丁以真正关注文化。

【讨论】:

猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 2018-02-04
  • 2015-03-23
  • 2015-07-15
  • 2021-05-20
相关资源
最近更新 更多