2011-11-15 78 views
3

我從RandomNumbers列表與收集Submittet對象丟失,新的集合數據

我得到這個簡單的類

public class Test 
{ 
    public string Name { get; set; } 
    public List<int> RandomNumbers { get; set; } 

    public Test() 
    { 
     RandomNumbers = new List<int>(){0,0,0,0,0}; 
    } 
} 

在我的控制,我創建獲得新的數據有問題中的兩個ActionResults一個爲獲取一個用於郵政

public ActionResult Test() 
{ 
    var test = new Test(); 
    return View(test); 
} 

[HttpPost] 
public ActionResult Test(Test test) 
{ 
    return View(); 
} 

,最後查看

@model Test 
@{ 
    ViewBag.Title = "Test"; 
    Layout = null; 
} 

<h2>Test</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(model => model.Name) 
    @Html.EditorFor(model => model.Name) 
    <ul>@foreach (var t in Model.RandomNumbers) 
     { 
      <li> 
       @Html.LabelFor(model => t) 
       @Html.EditorFor(model => t) 
      </li> 
     } 
    </ul> 
    <input type="submit" value="Save"/> 
} 

enter image description here

enter image description here

網頁看起來是這樣的。 現在當我點擊保存按鈕時,[HttpPost]測試被調用,但是包含的測試對象只包含新名稱,沒有包含隨機數列表中的更改。我做錯了什麼?

回答

3

綁定你必須確保你的嵌套集合獲取相應的視圖渲染。

在視圖:

 <ul>@for (int i = 0; i < Model.RandomNumbers.Count; i++) 
    { 
      <li> 
       @Html.LabelFor(m => m.RandomNumbers[i]) 
       @Html.TextBoxFor(m => m.RandomNumbers[i]) 
      </li> 
    } 
    </ul> 

這將創建索引輸入字段,如

<input id="RandomNumbers_3_" name="RandomNumbers[3]" type="text" value="0" />

(跳過簡潔確認)

2

This article應該可以幫助您如何收集您的形式

+0

不知道如何使用它,因爲我」 m不直接綁定到集合,而是綁定到具有集合的對象。 – gulbaek