使用MVC4 +实体框架更新模型4

时间:2013-03-12 11:20:20

标签: c# asp.net-mvc-4 entity-framework-4 visual-studio-2012

我正在努力学习MVC& EF远离WebForms和ADO.NET。我只是把我的第一个试验网站扔到一起,所以看看它是怎么回事并且遇到了绊脚石。

我正在页面上编辑一条记录,然后按保存。我没有收到任何错误,但数据没有更新。

正在更新文章模型

    public class Article
{
    [Key]
    public int Id { get; set; }

    public string Author { get; set; }
    public string Title { get; set; }
    public DateTime DateCreated { get; set; }
    public string Body { get; set; }
    public int Likes { get; set; }
    public int Dislikes { get; set; }
    public List<Comment> Comments { get; set; }
    public string Tags { get; set; }
    public int Category { get; set; }
}

Controller上的编辑代码,articleId来自查询字符串。

    [HttpPost]
    public ActionResult Edit(int articleId, FormCollection collection)
    {
        var result = from i in db.Articles
                     where i.Id == articleId
                     select i;

        if (TryUpdateModel(result))
        {
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(result.First());

    }

在调试时,TryUpdateModel()返回true并调用db.SaveChanges。没有错误返回。当被引导回Controller上的Index方法时,文章显示未更改。

这显然是明显的吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我忘了从无数字中选择模型了。添加.First()以选择修复它的记录。只是其中一个我无法从树上看到木头的场合!

    [HttpPost]
    public ActionResult Edit(int articleId, FormCollection collection)
    {
        var result = from i in db.Articles
                     where i.Id == articleId
                     select i;

        if (TryUpdateModel(result.First()))
        {

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

        return View(result.First());

    }