我需要在CourceModel中添加ChapterObject列表,但我不知道为什么值ChapterObject不会分配给当前实体。
我试试,但这不起作用。
我的第一种方法。
[HttpGet]
public ActionResult CreateChapter(CourceModel courceModel)
{
var chapterObject = new ChapterObject();
_db.CourceModels.Find(courceModel.Id).ChapterObjects.Add(chapterObject);
_db.Entry(chapterObject).State = EntityState.Modified;
return View(chapterObject);
}
[HttpPost]
public ActionResult CreateChapter(ChapterObject chapterObject)
{
_db.Entry(chapterObject).State = EntityState.Detached;
_db.SaveChanges();
return RedirectToAction("Index");
}
第二种方法
我正在尝试创建字段_courceModelId并在Get方法中添加值,但是当我调用Post方法_courceModelId = 0.我想是什么dispose删除_courceModelId值并且我创建新标志_isUptdated,但这不是也工作。
private int _courceModelId;
private bool _isUptdated;
[HttpGet]
public ActionResult CreateChapter(CourceModel courceModel)
{
_courceModelId = courceModel.Id;
_isUptdated = true;
var chapterObject = new ChapterObject();
return View(chapterObject);
}
[HttpPost]
public ActionResult CreateChapter(ChapterObject chapterObject)
{
//why _courceModelId = 0?
_db.CourceModels.Find(_courceModelId).ChapterObjects.Add(chapterObject);
_db.SaveChanges();
_isUpdate = false;
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if(_isUptdated) return;
if (disposing)
{
_db.Dispose();
}
base.Dispose(disposing);
}
答案 0 :(得分:0)
在这里附加对象(ChapterObject
)并修改另一个对象(CourceModels
)
[HttpGet]
public ActionResult CreateChapter(CourceModel courceModel)
{
var chapterObject = new ChapterObject();
var courseModel = _db.CourceModels.Find(courceModel.Id);
courseModel.ChapterObjects.Add(chapterObject);
_db.Entry(courseModel).State = EntityState.Modified;
return View(chapterObject);
}
并且_courceModelId = 0,因为它不是静态的,并且已经开始另一个请求。如果您想保留其值,您有两个选项,在模型中添加它并在表单中再次提交或在TempData中添加
TempData["_courceModelId"] = courceModel.Id;