我正在将数据加载到我的控制器操作中:
public ActionResult Index()
{
var temp = db.Parents.Include(x => x.Childrens).FirstOrDefault(x=>x.ID==1);
return View(temp);
}
在视图中,我将他们的编辑器显示为:
@model DataLoadingDemo.Models.Parent
@using (Html.BeginForm("Edit","Parent"))
{
@foreach (var item in Model.Childrens)
{
<div class="form-group">
@Html.LabelFor(model => item.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => item.Name)
@Html.ValidationMessageFor(model => item.Name)
</div>
</div>
}
}
当我提交表格时,那时候我没有把“孩子”带进我的[Httppost]行动,就像::
public ActionResult Edit([Bind(Include="ID,Name")] Parent parent, List<Children> item)
{
if (ModelState.IsValid)
{
db.Entry(parent).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(parent);
}
我刚收到“父母数据”,而不是Eagarly加载的儿童。 请帮帮我。
答案 0 :(得分:0)
我假设您正在使用Entity Framework。 看看这篇文章:http://msdn.microsoft.com/en-us/data/jj574232.aspx
首先,确保您拥有ID等于1的父母记录,并确保它具有儿童记录。 如果这两个条件都为真,那么我怀疑FirstOrDefault子句正在寻找Childrens ID等于1的项目。 您希望确保它正在查找父母ID等于1的项目。
尝试更改子句的顺序,如下所示。
public ActionResult Index()
{
var temp = db.Parents.Where(x=>x.ID==1)
.Include(x => x.Childrens).FirstOrDefault();
return View(temp);
}