ASP.Net MVC 5模型保留父级,但在Post中丢失子级集合

ebi*_*ick 0 asp.net-mvc razor

我有一个简单的亲子模型

   public class ApplicationTableAndFieldsViewModel
{
    [Key]
    [Required]
    public int ParentTableID { get; set; }
    [Required]
    public string Description { get; set; }

    public List<ApplicationTableField> ApplicationTableFields { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将整个模型从控制器传递到视图没有问题:

        public ViewResult Edit(int parentTableID)
    {
        ApplicationTableAndFieldsViewModel applicationTable = repository.ApplicationTablesVM
                .FirstOrDefault(p => p.ParentTableID == parentTableID);
        ViewBag.FieldTypeList = repository.FieldTypes;

        IEnumerable<string> FieldTypeDrop = repository.FieldTypes;


        List<SelectListItem> selectList = new List<SelectListItem>();
        foreach (var c in FieldTypeDrop)
        {
            SelectListItem i = new SelectListItem();
            i.Text = c;
            i.Value = c;
            selectList.Add(i);
        }
        ViewBag.FieldTypeList = selectList;
        return View(applicationTable);
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,访问并遍历这些子代没有问题。

         foreach (MASTS.Domain.ApplicationTableField f in Model.ApplicationTableFields)
         {
             <tr>
                <td colspan="7">@Html.EditorFor(model => f.Description)</td>
                <td colspan="3">@Html.DropDownListFor(model => f.FieldType, new SelectList(ViewBag.FieldTypeList, "Text", "Value"),f.FieldType)</td>
                <td colspan="2">@Html.CheckBoxFor(model => f.IsAudited)</td>
            </tr>
         }
Run Code Online (Sandbox Code Playgroud)

但是,当我按下“保存”按钮并返回到“编辑帖子”时,父数据在那里,但子对象为null。

有人可以帮助我了解为什么会这样或如何解决此问题吗?

谢谢,

埃德

Mur*_*ilo 5

我曾经有这个问题。它只是与for而不是与foreach

 @for (int i = 0; i < Model.ApplicationTableFields.Count(); i++)
 {
     @Html.EditorFor(model => Model.ApplicationTableFields[i].Description, new { htmlAttributes = new { @class = "form-control" } })
 }
Run Code Online (Sandbox Code Playgroud)