2010-04-12 59 views
4

我正在创建一个asp.net MVC应用程序,我想在其中提供一个动态添加控件的功能。我有一个表单,其中有两个用于单名控制的名字和姓氏的文本框。现在用户可以添加任意数量的这组控件。我可以使用Java脚本在页面上添加这些控件。但是我不知道如何在用户提交时访问这些控件的值。在asp.net中按钮点击动态添加控件mvc

请这方面的帮助或建议另一种方法

感谢

回答

2

有史蒂夫·桑德森文章Editing a variable length list, ASP.NET MVC 2-style的读取。它向你展示了如何以干净的MVC风格来做你正在寻找的东西。

+0

是否有任何更新,更有效的解决方案,给定已经4年了? – 2016-07-01 13:20:52

2

看看使用jQuery的AJAX调用的提交操作。

你可以通过你的控件进行交互(使用jquery类选择器和$ .each很容易)并将变量推入一个js变量。 将其解析为JSON并使用ajax调用将数据传递回控制器。

1

如果您来自webforms透视图,则习惯于在代码隐藏中以编程方式添加这些新控件。使用ASP.NET MVC,你最好用javascript来做这件事。

编写一个添加FirstName1,FirstName2,FirstName3等的javascript函数应该是微不足道的。在控制器中,检查Request.Form.AllKeys以确定用户添加了多少个字段。

你也可以在迭代称为“txtNumFields”的隐藏字段数量,然后使用该作为循环在你的控制值:

int numFields = int.Parse(Request.Form["txtNumFields"]); 
for (i==0;i<numFields ;i++) 
{ 
    string firstName = Request.Form["FirstName" + i.ToString()]; 
    ... 
} 
+0

谢谢戴夫,我试过这种方法,但Request.Form.AllKeys总是0.它不显示任何控件,我使用JavaScript添加。任何帮助? – 2010-04-12 12:57:27

+0

这是问题,因为Request.Form.AllKeys.Count始终是0.所以我无法访问我的控制器中的任何项目。 – 2010-04-12 13:06:24

+0

你是否在每个表单域上设置一个ID?您还需要确保该按钮的类型= submit,并且Action需要能够接受POST(使用[HttpPost]装饰Action方法 – 2010-04-12 13:11:48

相关问题