簡體   English   中英

在ASP.NET MVC中以表單順序枚舉發布的數據

[英]Enumerating posted data in form order in ASP.NET MVC

Windows CE 6中的訂單輸入表單包含具有重復列名的字段。 此數據需要在Post Controller中的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());
}
[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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM