C# 提交时未设置一个模型属性
以前从未出现过这个问题,但它发生在单个MVC操作上,所有其他模型属性都被传递给操作方法,但忽略了一个 在BilledItemViewModel模型中,显示问题的属性声明为: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
[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可编辑,但我需要将其传递给操作,以便我可以将该项目与该账单关联。