在控制器上 post class 的对象列表的任何更好的方法

Any better way to post list of object of class on controller

我想 post 我的对象列表到我的控制器。

这是我的 class 文件:

 public class MyModel
    {
        public int Id {get; set;}
        public List<ChildModel> ChildModelObject{ get; set; }
    }

public class ChildModel
    {
        public int ChildId {get; set;}
        public int sum {get; set;}
    }

我的浏览页面:

 @model Demo.MyModel

      @using (Html.BeginForm())
        {
          @{ int i = 0; }
          @foreach (var item in Model.ChildModelObject) //first I am displaying value and then on submit i will post this value
           {
              <input type="hidden" name="@Html.Raw("ChildModelObject[" + i + "].ChildId")" value="@item.ChildId" /> //This is how i am taking value and it is working perfect and i am getting childid.
             @Html.DisplayFor(modelItem => item.sum)
           }
<input type="submit" value="Save"/>
        }

控制器:

 public ActionResult Index(MyModel model)//In this i want all childid when form is posted
        {
        }

所以现在当我点击提交按钮时,我想要我的 MyModel 对象中的所有 childid

谁能告诉我比我正在做的更好的方法吗??

您应该像这样为 ChildModel class 创建编辑器模板:

@model Demo.ChildModel

@Html.HiddenFor(x => x.ChildId)
@Html.DisplayFor(x => x.sum)

将它放在 Views/Shared/EditorTemplates 文件夹中(或在您的控制器 EditorTemplates 中)并将其命名为 ChildModel.cshtml

然后你可以这样使用它:

@model Demo.MyModel

@using (Html.BeginForm())
{
   @Html.EditorFor(x=>x.ChildModelObject)
   <input type="submit" value="Save"/>
}

请注意,您不需要任何循环 MVC 自己生成正确的绑定