Windows CE 6中的订单输入表单包含具有重复列名称的字段。 需要在后控制器中的ASP.NET MVC4应用程序中枚举此数据。
控制器中不知道列名,因为表单是在运行时根据用户定义的数据创建的。
我尝试了下面的代码,但它返回重复名称的逗号分隔值。
如何按照它们在表单中出现的顺序单独获取每个发布的键/值对? 如果可以解决问题,也可以使用jquery以json格式发布数据。
观察结果:
id=1,1,2
orderdate=2013-01-01
quantity=12.2,15
预期结果:
id=1
orderdate=2013-01-01
id=1
quantity=12.2
id=2
quantity=15
查看:
<!DOCTYPE html>
<html>
<body>
<form method='post' action='SaveOrder'>
Order id<input name='id' type='text' value='1' />
Date <input name='orderdate' type='date' value='2013-01-01'/>
Row 1 id <input name='id' type='text' value='1' />
Quantity <input name='quantity' type='text' value='12.2'/>
Row 2 id <input name='id' type='text' value='2'/>
Quantity <input name='quantity' type='text' value='15' />
<input type='submit' value='Save order'/>
</form>
</body></html>
控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveOrder(NameValueCollection form)
{
for (int i = 0; i < form.Count; i++)
Console.WriteLine(form.GetKey(i)+"="+ form[i].ToString());
}
答案 0 :(得分:3)
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveOrder()
{
foreach (string key in Request.Form.AllKeys)
{
foreach (string value in Request.Form.GetValues(key))
{
Debug.WriteLine("{0} = {1}", key, value);
}
}
return View();
}
输出:
id = 1
id = 1
id = 2
orderdate = 2013-01-01
quantity = 12.2
quantity = 15
您唯一要做的就是将参数重新排序为
id = 1
orderdate = 2013-01-01
id = 1
quantity = 12.2
quantity = 15
id = 2