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; }
}

コントローラの編集コード、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 メソッドに戻ると、記事は変更されずに表示されます。

それは明白な何かですか?

どうもありがとう

4

1 に答える 1

0

列挙可能なモデルからモデルを選択するのを忘れていました。.First() を追加してレコードを選択すると、修正されました。木から木が見えない機会の 1 つにすぎません。

    [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 に答える