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 回答