Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC3可以';t将TextBoxFor中的十进制字段绑定到我的模型_C#_Asp.net Mvc 3_Razor_Model_Decimal - Fatal编程技术网

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被识别为正确的数字。

您尝试过重命名该属性吗?例如,为了放弃一个带有路由参数的碰撞,我尝试了它,但它无助于解决问题的最简单和最好的方法!多谢各位!