2011-11-15 102 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