我有一个简单的父子模型
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>
}
但是,当我点击“保存”按钮并返回“编辑帖子”时,父数据就在那里,但子对象为空。
有人可以帮助我理解为什么会这样或如何解决这个问题?
谢谢,
版
答案 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