我有一个表单允许用户使用JQuery(使用.clone)创建额外的"行",以便他们可以决定需要提交多少相同的信息.我的问题是我无法弄清楚如何在我的控制器中访问这些表单项.
提交的表单可能如下所示
基本上,在input
和选择之间的块可以重复无限次.当我提交给控制器时,我正在使用FormCollection form
访问表单元素.从那里我不确定如何访问已提交的项目.我想过使用for循环,然后通过类似[[Amount]] [i]之类的东西来访问它们,但显然这不起作用.
我是否以正确的方式解决这个问题?如果有的话,是否有人对此如何运作有任何建议?
提前致谢.
旧问题,但仍然......您可以通过调用Request.Form.GetValues
或者将发布的值作为数组获取Request.QueryString.GetValues
.例如:
string[] amounts = Request.Form.GetValues("Amount");
并且amounts
数组将包含正确的值,因此您可以发布包含comas,dots等的值,并且不用担心拆分/解析它.
当然,如果您正在运行MVC,请使用modelbinder来执行此操作.但是如果你使用webforms,通用处理程序等,你可以使用它...
查看模型绑定到列表.你的Action方法应该是:
public ActionResult MyAction(string[] Amount, int[] Item){ // ... }
但是,这将使您需要"链接"项目.或者创建一个"Item"类:
public class Item { public string Amount { get; set; } public int Item { get; set; } }
和
public ActionResult MyAction(IList- items){ // ... }
你的标记应该是:
等等...
我相信如果您有多个名为Amount的字段,则值将以逗号分隔.
要访问每个只是尝试:
string[] amounts = Request.Form["Amount"].Split(new char[] { ',' });
但请记住,输入不会在提交时清除,因此如果有人在文本框中输入逗号,则会导致问题.
因此我建议给它们编号.