我是ASP.NET MVC的新手,现在通过阅读asp.net中给出的教程从0学习。我的问题可能太简单了,但我找不到答案。为了快速回复,我在这里问。
// 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而不是模型对象作为参数?
答案 0 :(得分:5)
为什么操作方法DeleteConfirmed使用模型ID而不是 模型对象作为参数?
因为删除实体所需要的只是它的id,而为了编辑这个实体,你需要整个对象。另外我猜这个调用此Delete操作的视图只是在请求中发送要删除的实体的id,因此删除操作占用整个实体是没有意义的,因为它永远不会被绑定。