我在从RandomNumbers List中获取新数据时遇到问题
我得到了这个简单的课程
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,一个用于Get,一个用于Post
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"/>
}
页面看起来像这样。
现在,当我单击“保存”按钮时,将调用[HttpPost]
测试,但包含的测试对象仅包含新名称,不包括RandomNumber列表中的任何更改。我做错了什么?
答案 0 :(得分: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" />
(为简洁而跳过验证)
答案 1 :(得分:2)
This article可以帮助您了解如何在表单中绑定集合