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

时间:2015-10-17 13:52:47

标签: 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; }
}

将控制器中的整个模型传递给视图时没有问题:

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

在视图中,访问和循环访问孩子没有问题。

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

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

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

谢谢,

1 个答案:

答案 0 :(得分:4)

我曾经遇到过这个问题。它只与foreach合作,而不是 @for (int i = 0; i < Model.ApplicationTableFields.Count(); i++) { @Html.EditorFor(model => Model.ApplicationTableFields[i].Description, new { htmlAttributes = new { @class = "form-control" } }) }

x