如果是直接在页面中修改传参回来会因为类已经改变过所以不能修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public ActionResult Edit([Bind(Include = "ID,which")] DutyTable dutyTable)
{
if (ModelState.IsValid)
{
int soldierID = int.Parse(Request.Form["soldierID"]);
Soldier soldier = db.Soldiers.Find(soldierID);
dutyTable.soldier = soldier;
db.Entry(dutyTable).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return RedirectToAction("Edit",dutyTable.ID);
}

这么做就会导致更新不了
正确做法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public ActionResult Edit([Bind(Include = "ID,which")] DutyTable dutyTable)
{
if (ModelState.IsValid)
{
DutyTable d = db.DutyTables.Find(dutyTable.ID);
int soldierID = int.Parse(Request.Form["soldierID"]);
Soldier soldier = db.Soldiers.Find(soldierID);
d.soldier = soldier;
db.Entry(d).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("DutyTableManager");
}
return View(dutyTable);


}