Asp.Net MVC4入门指南:查询详细信息和删除记录

2013 年 5 月 23 日3210

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

  在本教程中,您将查看自动生成的Details和Delete方法。

  查询详细信息和删除记录

  打开Movie控制器并查看Details方法。

  ?

  public ActionResult Details(int id = 0)

  {

  Movie movie = db.Movies.Find(id);

  if (movie == null)

  {

  return HttpNotFound();

  }

  return View(movie);

  }

  Code First 使得您可以轻松的使用Find方法来搜索数据。一个重要的安全功能内置到了方法中。方法首先验证Find方法已经找到了一部电影,然后再执行其它代码。例如,黑客可以通过更改http://localhost:xxxx/Movies/Details/1到http://localhost:xxxx/Movies/Details/12345 (或某些其它值,不代表实际影片的值)从而使得链接URL 出现错误。如果您没有检测是否找到了Movie, null Movie会导致出现数据错误。

  查看Delete和DeleteConfirmed方法。

  ?

  // GET: /Movies/Delete/5

  public ActionResult Delete(int id = 0)

  {

  Movie movie = db.Movies.Find(id);

  if (movie == null)

  {

  return HttpNotFound();

  }

  return View(movie);

  }

  //

  // POST: /Movies/Delete/5

  [HttpPost, ActionName("Delete")]

  public ActionResult DeleteConfirmed(int id = 0)

  {

  Movie movie = db.Movies.Find(id);

  if (movie == null)

  {

  return HttpNotFound();

  }

  db.Movies.Remove(movie);

  db.SaveChanges();

  return RedirectToAction("Index");

  }

  请注意,Delete的HTTP Get 方法不会删除指定的电影,它返回删除电影的视图,您可以在此视图中提交 (HttpPost) 删除电影。如果使用GET 请求执行删除操作(或者执行编辑操作,创建操作或者更改数据的任何其它操作) 开辟了一个安全漏洞。对此的详细信息,请参阅斯蒂芬 · 瓦尔特的博客ASP.NET MVC Tip #46 - Don't use Delete Links because they create Security Holes.

[1][2]下一页

【责编:peter】

0 0