繁体   English   中英

ASP.NET MVC4动态表单生成

[英]ASP.NET MVC4 dynamic form generation

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

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

我不知道是否有办法在没有回复的情况下做到这一点。 或者回复我唯一的选择?

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

谢谢

不需要多个POST。 您希望表单向您的操作发送一组Person 行动将是这样的

[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操作。 请记住按顺序保持索引。

史蒂文桑德森在他的博客中有一篇非常好的关于这个的文章......当你在中间移除一个时,它并不依赖于每个人的数字索引来避免“漏洞”。

请参阅此处的文章: 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操作。 我首先建议首先阅读该文章,了解如何构建输入字段,以便在回发时填充列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM