C# ASP.NET MVC3可以';t将TextBoxFor中的十进制字段绑定到我的模型
这可能是一个愚蠢的问题,但我遇到了一个自己无法解决的问题。C# ASP.NET MVC3可以';t将TextBoxFor中的十进制字段绑定到我的模型,c#,asp.net-mvc-3,razor,model,decimal,C#,Asp.net Mvc 3,Razor,Model,Decimal,这可能是一个愚蠢的问题,但我遇到了一个自己无法解决的问题。 我正在从事一个ASP.NET MVC3项目。出于某种原因,在特定的Create页面上,验证页面时,模型上没有绑定十进制字段,我无法理解原因。 这是我的密码: @model ModelA /*some TextBoxFor or others DropDownListFor, all of them working well*/ @Html.TextBoxFor(m => m.ModelB.ModelC.MyField, ne
我正在从事一个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
。其他字段可以,例如:
@Html.TextBoxFor(m => m.ModelB.AnotherField, new { @id = "txtAnotherField" })
性能良好,并且正确填写了ModelB
的其他属性。
我的车型
ModelA
包含类型为ModelB
的属性,称为ModelB
ModelB
包含一个名为ModelC
的ModelC
类型的属性ModelC
包含一个名为MyField
的属性。(我以后可能会再加上一两个)。此字段是一个decimal
字段,没有任何数据注释或任何内容
public decimal MyField { get; set; }
顺便说一下,当我在浏览器的控制台中请求
$('#txtMyField').val()
它显示良好的值,例如12.54
我尝试的
- 将此十进制字段更改为浮点类型,问题是相同的
- 把它放在EditorFor而不是TextBoxFor中,问题也是一样的
- 将字段MyField放在ModelB中。ModelB对0的唯一属性是MyField
为什么这个领域是叛军?我可能做错了什么,但我不明白在哪里。。。有人能解释一下我的错误在哪里吗?
谢谢大家! 好的,下面是解决方案: “正确”的十进制值看起来像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被识别为正确的数字。
您尝试过重命名该属性吗?例如,为了放弃一个带有路由参数的碰撞,我尝试了它,但它无助于解决问题的最简单和最好的方法!多谢各位!