Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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# 提交时未设置一个模型属性_C#_Asp.net Mvc_Data Binding_Asp.net Mvc 5_Model Binding - Fatal编程技术网

C# 提交时未设置一个模型属性

C# 提交时未设置一个模型属性,c#,asp.net-mvc,data-binding,asp.net-mvc-5,model-binding,C#,Asp.net Mvc,Data Binding,Asp.net Mvc 5,Model Binding,以前从未出现过这个问题,但它发生在单个MVC操作上,所有其他模型属性都被传递给操作方法,但忽略了一个 在BilledItemViewModel模型中,显示问题的属性声明为: [Required] [Display(Name="Factura")] public int BillId { get; set; } 所有其他属性都可以正常工作,但上面的属性不行 动作方法签名: [HttpPost][ValidateAntiForgeryToken] public ActionResult AddBi

以前从未出现过这个问题,但它发生在单个MVC操作上,所有其他模型属性都被传递给操作方法,但忽略了一个

在BilledItemViewModel模型中,显示问题的属性声明为:

[Required]
[Display(Name="Factura")]
public int BillId { get; set; }
所有其他属性都可以正常工作,但上面的属性不行

动作方法签名:

[HttpPost][ValidateAntiForgeryToken]
public ActionResult AddBillItem([Bind(Include = "BillId,ItemCodeId,Quantity,UnitPrice,Notes,TaxPercent,IsDebit,Description")] Models.BilledItemViewModel bitem)
该属性将显示在视图上,如下所示:

                    <div class="form-group">
                        @Html.LabelFor(model => model.BillId, htmlAttributes: new { @class = "control-label col-md-2" })
                        <div class="col-md-10">
                            <div class="col-sm-4 input-group">
                                <span class="input-group-addon">#</span>
                                @Html.EditorFor(model => model.BillId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled" } })
                                @Html.ValidationMessageFor(model => model.BillId, "", new { @class = "text-danger" })
                            </div>
                        </div>
                    </div>

@LabelFor(model=>model.BillId,htmlAttributes:new{@class=“controllabel col-md-2”})
#
@EditorFor(model=>model.BillId,new{htmlAttributes=new{@class=“form control”,disabled=“disabled”})
@Html.ValidationMessageFor(model=>model.BillId,“,new{@class=“text danger”})

调试时,我在操作上设置了一个断点,它命中了,它还表示模型状态有效。当我检查传递对象(bitem)的值时,我可以看到所有属性都具有我在表单中输入的值,但BillId是零而不是一。

问题是您的BillId在视图中被禁用。禁用的字段不会发送到服务器。只需将其启用以进行编辑,或将其设置为隐藏的输入

@Html.HiddenFor(h => h.BillId)

隐藏的输入对用户不可见,但会发送到服务器以及表单中的其他字段。

问题是您的BillId在视图中被禁用。禁用的字段不会发送到服务器。只需将其启用以进行编辑,或将其设置为隐藏的输入

@Html.HiddenFor(h => h.BillId)

隐藏的输入对用户不可见,但会发送到服务器以及表单中的其他字段。

您也可以将其标记为只读


只读控件将被发送到服务器。

您也可以将其标记为只读


只读控件将被发送到服务器。

您是否也可以将cshtml部分发布到该属性?只是猜测一下,但您是否将
BillId
字段包含在cshtml中?正如@AdrianoRepetti所指出的,这看起来像是刚刚发布了CSHTML的客户端绑定问题。根据@wahwah的建议,我删除了disabled=“disabled”HTML属性,当我删除该属性时,BillId将正确传递。我不希望账单ID可编辑,但我需要将其传递给操作,以便我可以将项目与该账单关联。您是否也可以将cshtml部分发布到该属性?只是猜测一下,但您是否将
BillId
字段隐藏在cshtml中?正如@AdrianoRepetti所指出的,这看起来像是刚刚发布了CSHTML的客户端绑定问题。根据@wahwah的建议,我删除了disabled=“disabled”HTML属性,当我删除该属性时,BillId将正确传递。我不希望账单ID可编辑,但我需要将其传递给操作,以便我可以将该项目与该账单关联。