我的视图模型包含一个整数列表,我遇到的问题是,当我发送修改后的表单视图模型时,它始终等于 null。
我的视图模型:
public class testViewModel
{
public List<int> itemTest { get; set;
}
我的控制器中的操作:
例如,我会尝试对表单中输入的新值进行求和,但计算出的总和始终等于 0,没有任何变化。
public ActionResult form(int nbre)
{
testViewModel montest = new testViewModel()
{
itemTest = new List<int>()
};
for(int i=0;i<nbre ;i++)
{
montest.itemTest.Add(0);
}
return View(montest);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult form(testViewModel maListe)
{
int somme = 0;
if (maListe.itemTest != null)
{
if (maListe.itemTest.Count() != 0)
{
foreach (var item in maListe.itemTest)
{
somme += item;
}
}
}
//listtest = maListe;
return RedirectToAction("test2", new { qte = somme });
}
My view
@model MvcWebRole1.ViewModels.testViewModel
@{
ViewBag.Title = "Formulaire";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table>
@foreach (var item in Model.itemTest)
{
<tr >
<td >
@Html.Label("Quantitée")
</td>
<td>
@Html.EditorFor(model => item)
@Html.ValidationMessageFor(model => item)
</td>
</tr>
}
</table>
<input type="submit" value="Valider" />
}
谢谢你好心帮助我
您需要为集合中的每个项目建立索引。您的代码的问题似乎是使用foreach。你确实想使用for相反,并传递索引编辑者 call.
for (int i = 0; i < Model.Items.Count; i++) {
@Html.EditorFor(m => m.Items[i])
}
这只适用于永远不会改变顺序的有序列表。如果您想重新排序项目,我建议您阅读 Phil Haack 关于向服务器发送列表的精彩文章。
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)