ASP.NET MVC4中怎么查询详细信息和删除记录

发布时间:2021-07-15 16:28:00 作者:Leah
来源:亿速云 阅读:138

本篇文章为大家展示了ASP.NET MVC4中怎么查询详细信息和删除记录,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

查询详细信息和删除记录打开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/1http://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.

将删除数据的HttpPost方法命名为唯一签名或名称的 DeleteConfirmed 方法。这两个方法的签名如下所示:

// GET: /Movies/Delete/5
public ActionResult Delete(int id = 0)
 
//
// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id = 0)

公共语言运行时 (CLR)重载方法时,需要方法具有独特唯一的签名 (方法名称相同但不同的参数列表)。但是,在这里您需要两种删除方法 — — 一个 GET方法和一个POST方法它们都具有相同的签名。(他们都需要接受一个整数作为参数)。

要解决这一点,可以有几种办法。一是使用不同的方法名称。这是框架代码在前面的示例中所使用的方法。然而,这就带来了一个小问题: ASP.NET 将部分的 URL按名称映射到操作方法,如果您重命名了方法,通常Routing将无法找到该方法。解决方法是您在示例中看到的,将ActionName("Delete")属性添加到DeleteConfirmed 方法。这会有效的执行Routing系统的Url映射,这样一个包含/Delete/的 POST 请求的URL 将找到DeleteConfirmed 方法。

另一个常见的方法,来避免具有相同名称和签名的方法,是人为地改变POST 方法,包括未使用参数的签名。例如,有些开发人员添加参数类型 FormCollection,FormCollection是会传递给 POST 方法的,然后根本不使用此参数:

public ActionResult Delete(FormCollection fcNotUsed, int id = 0)
{
  Movie movie = db.Movies.Find(id);
  if (movie == null)
  {
    return HttpNotFound();
  }
  db.Movies.Remove(movie);
  db.SaveChanges();
  return RedirectToAction("Index");
}

您现在有一个完整的 ASP.NET MVC 应用程序并在本地的 DB 数据库中存储数据。您可以创建、 读取、 更新、 删除和搜索电影。

ASP.NET MVC4中怎么查询详细信息和删除记录

上述内容就是ASP.NET MVC4中怎么查询详细信息和删除记录,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. ASP.NET网址
  2. Asp.Net MVC4入门指南(9):查询详细信息和删除记录

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

asp.net mvc4

上一篇:ASP.NET MVC4中怎么给数据模型添加校验器

下一篇:ASP.NET中如何使用BulletedList列表控件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》