列表与模型数据绑定

时间:2016-03-22 15:33:20

标签: asp.net-mvc model-binding

所以我有一个我要提交的表单,我可以获得要绑定的列表或模型,但不能同时进行。我怀疑它与模型绑定器有关。

HTML

["-"]

控制器

@using (Html.BeginForm("Index", "Home", FormMethod.Post)){
    @Html.AntiForgeryToken()
    <div class="TransferHeader">
        <div>
            @Html.LabelFor(model => model.tranRequestedBy)
            @Html.EditorFor(model => model.tranRequestedBy, new { @Name = "h.tranRequestedBy" })
        </div>
        <div>
            @Html.LabelFor(model => model.tranNotes)
            @Html.EditorFor(model => model.tranNotes, new { @Name = "h.tranNotes" })
        </div>
       <input name="h.TransfersDetail.Index" id="detIndex" type="hidden" value="c3a3f7dd-41bb-4b95-b2a6-ab5125868adb">
       <input name="h.TransfersDetail[c3a3f7dd-41bb-4b95-b2a6-ab5125868adb].detToolCode" id="detToolCode" type="hidden" value="1234">
    </div>
}

模特课程:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(TransfersHeader h)
{
    return View();
}

两个底部输入是从对add方法的AJAX调用生成的,如果它们不存在则会发生两个HTML帮助程序编辑器将出现在模型中,但如果它们确实存在,则只会出现传输详细信息列表。 我能做些什么来确保所有数据都进入模型吗?

1 个答案:

答案 0 :(得分:0)

不清楚如何生成这些输入,但name属性不正确。您的模型不包含名为h的集合属性,但它包含一个名为TransfersDetail的属性,因此您的输入必须是

<input name="TransfersDetail.Index" type="hidden" value="c3a3f7dd-41bb-4b95-b2a6-ab5125868adb">
<input name="TransfersDetail[c3a3f7dd-41bb-4b95-b2a6-ab5125868adb].detToolCode" type="hidden" value="1234">

还不清楚为什么添加id属性(如果你在jQuery中引用集合项,你最好使用类名和相对选择器),但你使用的id不是有一个索引器建议你将生成重复的id属性,这是无效的html(并且jQuery选择器在任何情况下都不起作用)