该字段必须是数字

我有这个领域:

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

视图:

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

如果我用逗号放一个值,MVC默认validation不接受,说: "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默认validation不接受格式为dd/mm/yyyy日期,仅以mm/dd/yyyy

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

是全球化还是什么? 我怎么解决这个问题?

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


  

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

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

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

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

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

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

 
@{ 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" })

我发现这里ASP .NET MVC在每个字段级别禁用客户端validation