动态表单的Model或ViewModel

时间:2013-06-12 10:53:11

标签: c# asp.net-mvc asp.net-mvc-4

我有一种联系信息,如下所示:

Name: input    Email : input
Add More

如果用户想要添加其他名称和电子邮件,她可以点击添加更多,她将看到另一组名称和电子邮件输入框。

如何在控制器端使用MVC处理此问题?

public ActionResult Process(IEnumerable<Contact> contacts){
.... ???

或者如果我需要一个模型绑定,我怎么能完成这个,我的模型应该是什么?

2 个答案:

答案 0 :(得分:1)

这取决于许多因素,例如您如何创建字段。这是一个非常普遍的问题。

我个人会通过构建一个json字符串并发送到服务器来做到这一点。

另一种方法是通过特定的方式在客户端上构建元素以进行模型绑定,以了解它是一个集合。

我引用@Shyju来帮助我解决类似的问题。

  

保持模型绑定适用于新添加的动态   元素,您需要遵循元素的命名约定。

     

诀窍是保持html元素的id属性值   格式。 CollectionName_ItemIndex__PropertyName

     

并以此格式命名属性值

     

集合名[的ItemIndex] .PropertyName

答案 1 :(得分:0)

我想我会用一些

IList<Contact> Contacts; as a ViewModel. 

提交表单后,一些操作会处理。从视图的角度来看,我将使用jQuery append()方法添加下一个联系人行,并且不进行完整的webiste刷新。