感谢您的回答,我花了很多时间研究使用淘汰赛或手工编码 javascript 来实现预期结果的可能性,但是,对于如此微不足道的事情,感觉需要做很多工作。
我现在已经以我认为最简单的方式解决了这个问题,首先我在表单中添加了一个按钮,它将使用 AJAX 添加一个新的编辑器模板。
@Ajax.ActionLink("Add additional contact",
"AddContact",
"Event",
new AjaxOptions()
{
HttpMethod = "GET",
InsertionMode = InsertionMode.InsertBefore,
UpdateTargetId = "contacts"
})
接下来我将 AddContact actionresult 添加到视图以返回部分视图结果(编辑模板)
public ActionResult AddContact()
{
return PartialView("EditorTemplates/EventContactDto", new EventContactDto());
}
虽然这会将模板添加到页面中,但在提交表单时不会将其添加到模型中(因为 ID 不正确,因此不会添加到列表中)。
为了解决这个问题,我使用了可以从 Nuget 下载的 Steven Sandersons BeginCollectionItem Helper。
安装包后,我需要做的就是将以下内容添加到编辑器模板中,以便它使用 MVC 的约定设置 ID:
@using (Html.BeginCollectionItem("EventContactList"))
{
... the form ...
}
现在,当页面提交时,模型中的新联系人已准备好插入数据库。
我希望这个答案能帮助其他人,并节省他们研究这个问题的时间!