【问题标题】:How add entity to list in other entity?如何将实体添加到其他实体中?
【发布时间】:2017-01-05 14:58:05
【问题描述】:

我需要将 ChapterObject 添加到 CourceModel 中的列表,但我不知道为什么值 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。我想什么处置删除 _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);
    }

【问题讨论】:

标签: c# asp.net-mvc controller


【解决方案1】:

在这里附加对象(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;

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多