ASP.NET MVC4动态表单生成

本文关键字:表单 动态 NET MVC4 ASP | 更新日期: 2023-09-27 18:20:48

我是ASP.NET MVC的新手,需要一些帮助。我需要创建一个动态创建表单的表单。例如,假设我有一个名为Person的模型。此人有名字和姓氏。在表单中,我希望允许用户输入个人的名字和姓氏。我知道如何做到这一点,但我不知道如何允许用户添加多个人,并将其作为一个表单提交。

在初始加载页面(视图)时,默认情况下会显示两个空文本框(用于名字和姓氏)。我还有一个添加按钮,允许用户在表单中添加另一行,并为第二个人显示相同的2个文本框。现在,如果用户提交它,它将有2个用于名字的文本框和2个用于姓氏的文本框。

我不知道是否有办法在没有后卫的情况下做到这一点。还是寄回是我唯一的选择?

编辑:忘了提我正在使用Razor引擎。

感谢

ASP.NET MVC4动态表单生成

不需要多个POST。您希望表单向您的操作发送个人数组。行动将类似

[HttpPost]
public ActionResult AddPeople(Person[] people){ ... }

要实现这一点,您必须枚举视图中的输入字段。它们必须被索引,从0开始并相应地递增,如:

@using(Html.BeginForm("AddPeople","TheController", FormMethod.Post))
{
  <input type="text" name="people[0].FirstName" />
  <input type="text" name="people[0].LastName" />
  ...
  <input type="text" name="people[1].FirstName" />
  <input type="text" name="people[1].LastName" />
  ...
  <input type="text" name="people[n].FirstName" />
  <input type="text" name="people[n].LastName" />
}

您必须使用javascript和简单的DOM操作来添加新字段。只要记得把索引整理好就行了。

Steven Sanderson在他的博客中有一篇关于这方面的非常好的文章。。。它不依赖于每个人的数字索引来避免在移除中间的一个"洞"。

请参阅此处的文章:http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

然后,您将需要验证:http://blog.stevensanderson.com/2010/01/28/validating-a-variable-length-list-aspnet-mvc-2-style/

我在MVC 3和4中使用这段代码……它的工作方式很有魅力。

Phil Haack写了一篇关于你想做什么的文章。为了让它是动态的(意味着他们可以向列表中添加1到多个人),你必须通过在添加按钮上附加一个点击事件来复制一行新的输入字段来进行一些JavaScript操作。我首先建议先通读这篇文章,了解如何构建输入字段,以便在发布时填充列表。