我一直在寻找一段时间来完成以下操作:在表单传递完成后向表单添加项目。我已经设法将新项目的HTML添加到表单中,但发布后无法识别。所以,让我的问题更清楚一点:
我有一个对象,即Project。在该项目中,我有一个List,其中包含姓名/电子邮件和一个bool,用于检查该成员是否已被选中(通过使用复选框,当然)。
在视图中,它会生成一个表单,其中某人可以输入项目详细信息并选择(预先存在的)成员。还有一个按钮,可以创建新成员。按下按钮时,项目表单将被隐藏,并显示一个新的(PartialView /表单)。在填写所需的用户详细信息后,它将通过AJAX请求发送,并返回JSON对象。
新用户被添加到usertable中,但表单似乎无法识别新添加的成员。我已经检查了助手(@CheckBoxFor等)生成的HTML和我注入表中的HTML:它是相同的。
我怀疑表单本身必须以某种方式重置(重新绑定?),但我的搜索尝试没有提出任何问题,execpt教程/ stackoverflow问题解释了如何在视图中绑定模型,而不是重新绑定
我为缺乏代码道歉,我希望解释已经足够了。
答案 0 :(得分:0)
我建议你阅读Steven Sanderson撰写的Editing Variable Length List
文章,该文章说明了实现这一目标的一个非常好的方法。我们的想法是,您不应该使用整数作为输入字段名称的索引,而应使用Guids,并使用.index
特殊隐藏字段来指示模型绑定器的当前行的索引。这样,无论您在表单中动态添加或删除多少字段,模型绑定器始终都能够成功绑定集合属性。
在他的文章中,他还展示了一个很好的Html.BeginCollectionItem
自定义HTML助手,它隐藏了这项工作。