1

私は ASP.NET MVC の初心者で、asp.net のチュートリアルを読んでゼロから学んでいます。私の質問は単純すぎるかもしれませんが、答えが見つかりません。迅速な対応のため、ここで質問します。

アクション メソッドの編集:

        // GET: /Movie/Edit/5

        public ActionResult Edit(int id = 0)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

        //
        // POST: /Movie/Edit/5

        [HttpPost]
        public ActionResult Edit(Movie movie)
        {
            if (ModelState.IsValid)
            {
                db.Entry(movie).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(movie);
        }

削除アクション メソッド:

        //
        // GET: /Movie/Delete/5

        public ActionResult Delete(int id = 0)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

        //
        // POST: /Movie/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            Movie movie = db.Movies.Find(id);
            db.Movies.Remove(movie);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

更新と削除の HTTP POST を比較してみましょう。気になります:

アクション メソッド DeleteConfirmed がモデル オブジェクトではなくモデル ID をパラメーターとして使用するのはなぜですか?

4

1 に答える 1

5

アクション メソッド DeleteConfirmed がモデル オブジェクトではなくモデル ID をパラメーターとして使用するのはなぜですか?

エンティティを削除するために必要なのはその ID だけですが、このエンティティを編集するにはオブジェクト全体が必要です。また、この削除アクションを呼び出しているビューは、リクエストで削除するエンティティの ID のみを送信していると思います。そのため、バインドされないエンティティ全体を削除アクションで取得しても意味がありません。

于 2012-09-12T09:16:09.157 に答える