这可能是一个虚假的问题,但我遇到了一个我自己无法解决的问题。
我正在开发一个 ASP.NET MVC3 项目。出于某种原因,在特定的Create
页面上,当页面经过验证时,模型上没有绑定十进制字段,我无法理解为什么。
这是我的代码:
@model ModelA
/*some TextBoxFor or others DropDownListFor, all of them working well*/
@Html.TextBoxFor(m => m.ModelB.ModelC.MyField, new { @id = "txtMyField" })
当我验证网页时,此特定字段ModelA
的模型MyField
已正确填充 EXCEPT 。其他字段也可以,例如:
@Html.TextBoxFor(m => m.ModelB.AnotherField, new { @id = "txtAnotherField" })
完美无缺,ModelB
的其他属性已正确填充。
我的模特
ModelA
包含名为ModelB
的{{1}}类型的属性
ModelB
包含名为ModelB
的{{1}}类型的属性
ModelC
包含一个名为ModelC
的属性。 (我将来可能会增加一两个)。此字段是ModelC
字段,没有任何DataAnnotation或任何内容。
MyField
顺便说一句,当我在浏览器的控制台中请求
decimal
它显示了良好的值,例如public decimal MyField { get; set; }
。
我尝试了什么
为什么这个领域是反叛者?我可能做错了什么,但我无法理解......有人能解释我的错误在哪里?
谢谢!
答案 0 :(得分:1)
好的,这是解决方案:
“正确”十进制值看起来像45.68,.
作为分隔符
但该应用程序是非英语应用程序,分隔符必须是,
。默认情况下,45,68不是正确的数字。所以我添加了这段代码:
jQuery.extend(jQuery.validator.methods, {
number: function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
和45,68被认为是正确的数字。