4

我正在尝试学习 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。不返回任何错误。当被引导回控制器上的 Index 方法时,文章显示没有变化。

是不是很明显?

非常感谢

4

1 回答 1

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());

    }
于 2013-03-12T12:06:17.320 回答