2

我一直在寻找一段时间来完成以下工作:在表单通过后向表单添加项目。我已经设法将新项目的 HTML 添加到表单中,但发布后无法识别。所以,让我们让我的问题更清楚一点:

我有一个对象,即 Project。在那个项目中,我有一个列表,其中包含姓名/电子邮件和一个布尔值,用于检查是否已选择成员(当然,通过使用复选框)。

在视图中,它会生成一个表单,有人可以在其中输入项目详细信息并选择(预先存在的)成员。还有一个按钮,可以创建新成员。当按钮被按下时,项目表单被隐藏并呈现一个新的(PartialView/form)。填写所需的用户详细信息后,通过 AJAX 请求发送并返回 JSON 对象。

新用户已添加到用户表中,但表单似乎无法识别新添加的成员。我已经检查了由帮助程序(@CheckBoxFor 等)生成的 HTML 与我注入表中的 HTML:它是相同的。

我怀疑表单本身必须以某种方式重置(重新绑定?),但我的搜索尝试没有提出任何问题,除了解释如何在视图中绑定模型而不是重新绑定的教程/stackoverflow 问题。

我为缺少代码道歉,我希望解释足够。

4

1 回答 1

0

我建议您阅读Editing Variable Length ListSteven Sanderson 撰写的文章,该文章说明了实现这一目标的一种非常好的方法。这个想法是,您不应该使用整数作为输入字段名称的索引,而是使用 Guids,并使用.index特殊的隐藏字段来指示模型绑定器的当前行的索引。这样,无论您从表单中动态添加或删除多少字段,模型绑定器都将始终能够成功绑定集合属性。

在他的文章中,他还展示了一个很好的Html.BeginCollectionItem自定义 HTML 助手,它隐藏了这项工作。

于 2013-01-25T09:13:02.543 回答