我真的很感激对此的一些见解:以下代码
[HttpPost]
public ActionResult Edit(BeamCollection beamcollection)
{
if (ModelState.IsValid)
{
beamcollection.BeamMaterial = db.Types.Find(Convert.ToInt32(Request.Form.Get("BeamMaterial_ID")));
db.Entry(beamcollection).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Details", "Bridge");
}
return View(beamcollection);
}
当我尝试修改 BeamCollection 记录时,所有更改都会反映并保存到数据库中,除了从 DropDownList 获取所选值的 beamcollection.BeamMaterial。当我调试时,我可以看到选定的值被分配给了 beamcollection.BeamMaterial!
顺便说一下,这个字段定义如下
public virtual AllTypes BeamMaterial { get; set; }
所以它反映了与AllTypes的一对多关系,但它是一种单向关系。
有什么奇怪的(对我来说),是相同的技术被用于 Create 动作,它完美地工作:
public ActionResult Create(BeamCollection beamcollection)
{
if (ModelState.IsValid)
{
beamcollection.BridgeInfo = db.Bridges.Find(bridgeID);
beamcollection.BeamMaterial = db.Types.Find(Convert.ToInt32(Request.Form.Get("BeamMaterial_ID")));
db.BeamCollections.Add(beamcollection);
db.SaveChanges();
return RedirectToAction("Details", "Bridge");
}
return View(beamcollection);
}
为什么会发生这种情况以及如何使其工作,请帮助。