gpt4 book ai didi

asp.net-mvc - 发送一个 ViewModel,其中包含一个带有 Html.BeginForm 的列表(MVC 4)

转载 作者:行者123 更新时间:2023-12-02 01:38:33 25 4
gpt4 key购买 nike

我的 View 模型包含一个整数列表,我遇到的问题是,当我发送修改后的表单 View 模型时,它始终等于 null。

我的 View 模型:

public class testViewModel
{
public List<int> itemTest { get; set;
}

我的 Controller 中的操作:

For example, I'll try to sum ​​the new values ​​entered into the form, but the sum calculated is always equal to 0, nothing changes.

      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 });
}

我的观点

  @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 来代替,并通过 EditorFor 调用传入索引。

 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

关于asp.net-mvc - 发送一个 ViewModel,其中包含一个带有 Html.BeginForm 的列表(MVC 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17023504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com