还有更好的方法在控制器上发布类的对象列表吗?

本文关键字:对象 布类 列表 控制器 更好 方法 | 更新日期: 2023-09-27 18:07:23

我想把我的对象列表发送给我的控制器。

这是我的类文件:
 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;}
    }

My View Page:

 @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对象。

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

还有更好的方法在控制器上发布类的对象列表吗?

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

@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自己生成右绑定

相关文章: