在GET操作中设置实体键

时间:2012-06-18 09:21:50

标签: c# asp.net-mvc-3 ado.net-entity-data-model

我知道这是一个非常简单的问题,但我是C#,ASP.NET MVC3和ADO.Net实体框架的新手,而我的朋友google对我帮助不大......

所以,我有两个实体:Post和Comments,它们之间有1-n关系。

我想以简单的形式在帖子上发表评论,并提供发布帖子ID的路线。

GET部分(id是帖子的id)

    //
    // GET: /Blog/Comment/5

    public ActionResult Comment(int id)
    {
        Comment comment = new Comment();
        comment.PostReference.EntityKey = new EntityKey("BlogEntities.Posts", "id", id);

        return View(comment);
    }

POST部分:

    //
    // POST: /Blog/Comment/5

    [HttpPost]
    public ActionResult Comment(Comment comment)
    {
        if (ModelState.IsValid)
        {
            db.Comments.AddObject(comment);

            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View();
    }

我在调试模式下进行了操作,并且在提交表单时,键显示为null。 如果我在HttpPost方法中设置postreference,它就可以正常工作,但此时我对id没有任何线索。 所以,我认为必须在GET部分设置......

或许我完全走错了方向?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如前所述,完全愚蠢的问题......

    //
    // POST: /Blog/Comment/5

    [HttpPost]
    public ActionResult Comment(int id, Comment comment)
    {
        if (ModelState.IsValid)
        {
            db.Comments.AddObject(comment);
            comment.PostReference.EntityKey = new EntityKey("BlogEntities.Posts", "id", id);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View();
    }

将id放在方法的arg中,然后在AddObject完成后设置引用......

希望它会像我一样帮助一些失落的鸟......