我在从RandomNumbers列表中获取新数据时遇到问题
我上了这个简单的课
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};
}
}
在我的控制器中,我创建了两个ActionResult,一个用于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列表中的所有更改。我做错了什么? 最佳答案
您必须确保嵌套的集合相应地在视图中呈现。
在视图中:
<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" />
(为简便起见,跳过验证)