加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 发送一个ViewModel,其中包含一个带有Html.BeginF

发布时间:2020-12-16 07:19:18 所属栏目:asp.Net 来源:网络整理
导读:我的viewmodel包含一个整数列表,我遇到的问题是,当我发送修改后的表单viewmodel时,它总是等于null. 我的ViewModel: public class testViewModel { public Listint itemTest { get; set; } 控制器中的操作: For example,I’ll try to sum ??the new values
我的viewmodel包含一个整数列表,我遇到的问题是,当我发送修改后的表单viewmodel时,它总是等于null.

我的ViewModel:

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

控制器中的操作:

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.你真的想用它来代替并使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读