ASP.NET MVC 5 - 查询Details和Delete方法
2016-11-04 14:05
477 查看
在本教程的这一部分,您会检查自动生成的
打开
![](https://media-www-asp.azureedge.net/media/4412403/dd.png)
创建此操作方法的 MVC 脚手架引擎添加注释显示一个调用方法的 HTTP 请求。在这种情况下,它是与三个
URL 部分、
代码首先容易地搜索数据使用
的链接的 URL 错误引入到站点中。如果你不做检查 null 的电影,一个空的电影会导致数据库错误。
检查
请注意,
删除。执行删除操作响应 GET 请求 (或对于这一问题,需要执行的编辑操作,创建操作或更改数据的任何其他操作) 开辟了一个安全漏洞。有关详细信息,请参阅斯蒂芬
· 瓦尔特博客ASP.NET
MVC 提示 #46 — — 不使用删除链接,因为它们创建安全漏洞.
将删除数据的
HTTP POST 方法独特签名或名称。两个方法签名如下所示︰
公共语言运行时 (CLR) 需要重载的方法,具有独特的参数签名 (方法名称相同但不同的参数列表)。然而,在这里你需要两个都具有相同的参数签名的删除方法
— — 一个得到 — — 和一个职位。(他们都需要接受一个整数作为参数)。
若要排序这一点,你可以做几件事情。一个是给出了方法不同的名称。这是基架机制在前面的示例中做了什么。然而,这介绍了一个小问题︰
ASP.NET 将线段的 URL 映射到操作方法的名字,和如果你重命名的方法,通常路由将无法找到该方法。解决方案是您在示例中,将
POST 请求 URL 将找到的
另一种常见的方式,为避免与具有相同名称和签名的方法的问题是人为地改变 POST 方法,包括未使用的参数的签名。例如,一些开发人员添加参数类型
POST 方法,然后根本不使用参数︰
你现在有一个完整的 ASP.NET MVC 应用程序将数据存储在本地的 DB 数据库。你可以创建、
读取、 更新、 删除和搜索电影。
![](https://media-www-asp.azureedge.net/media/46620/gx.png)
已经建立和测试
web 应用程序之后下, 一步是将它提供给其他人使用互联网。要做到这一点,必须将其部署到 web 宿主提供程序。Microsoft
提供了免费的虚拟主机中蔚蓝试用帐号的达
10 web 站点。我建议你下一步按照我的教程会员、
OAuth,与 SQL Azure 数据库安全的 ASP.NET MVC 应用程序部署。优秀的教程是汤姆戴克斯特中间级创建
ASP.NET MVC 应用程序中的实体框架数据模型。计算器和ASP.NET
MVC 论坛是一个伟大的地方问问题。跟着我在
twitter 上,所以你可以在我最新的教程上的更新。
反馈是欢迎的。
— —里克
· 安德森twitter: @RickAndMSFT
— —斯科特静态twitter: @shanselman
-----------------------------------------------------------------------------------------
《ASP.NET MVC 5 入门指南》12篇文章汇总如下:
1. ASP.NET MVC 5 - 入门
2. ASP.NET MVC 5 - 控制器
3. ASP.NET MVC 5 - 视图
4. ASP.NET MVC 5 - 添加一个模型
5. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
6. ASP.NET MVC 5 - 从控制器访问数据模型
7. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
8. ASP.NET MVC 5 - 将数据从控制器传递给视图
9. ASP.NET MVC 5 - 添加搜索
10. ASP.NET MVC 5 - 给电影表和模型添加新字段
11. ASP.NET MVC 5 - 给数据模型添加校验器
12. ASP.NET MVC 5 - 查询Details和Delete方法
希望这些文章对感兴趣的朋友有所帮助
Details和
Delete方法。
检查详细信息和删除方法
打开Movie控制器并检查的
Details的方法。
![](https://media-www-asp.azureedge.net/media/4412403/dd.png)
public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); }
创建此操作方法的 MVC 脚手架引擎添加注释显示一个调用方法的 HTTP 请求。在这种情况下,它是与三个
URL 部分、
Movies控制器、
Details方法和一个
ID值的
GET请求。
代码首先容易地搜索数据使用
Find方法。重要的安全功能,内置的方法是代码验证,
Find方法发现了一部电影,代码试图做什么以它之前。例如,黑客还可以通过更改由从http://localhost:xxxx/电影/细节/1到的东西像http://localhost:xxxx/电影/细节/12345 (或一些其他的值,并不代表实际的电影)
的链接的 URL 错误引入到站点中。如果你不做检查 null 的电影,一个空的电影会导致数据库错误。
检查
Delete和
DeleteConfirmed方法。
// GET: /Movies/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // POST: /Movies/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Movie movie = db.Movies.Find(id); db.Movies.Remove(movie); db.SaveChanges(); return RedirectToAction("Index"); }
请注意,
HTTP Get
Delete方法并不删除指定的电影,它返回一个视图的电影,你可以提交 (
HttpPost)
删除。执行删除操作响应 GET 请求 (或对于这一问题,需要执行的编辑操作,创建操作或更改数据的任何其他操作) 开辟了一个安全漏洞。有关详细信息,请参阅斯蒂芬
· 瓦尔特博客ASP.NET
MVC 提示 #46 — — 不使用删除链接,因为它们创建安全漏洞.
将删除数据的
HttpPost方法被命名为
DeleteConfirmed,给出了
HTTP POST 方法独特签名或名称。两个方法签名如下所示︰
// GET: /Movies/Delete/5 public ActionResult Delete(int? id) // // POST: /Movies/Delete/5 [HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(int id)
公共语言运行时 (CLR) 需要重载的方法,具有独特的参数签名 (方法名称相同但不同的参数列表)。然而,在这里你需要两个都具有相同的参数签名的删除方法
— — 一个得到 — — 和一个职位。(他们都需要接受一个整数作为参数)。
若要排序这一点,你可以做几件事情。一个是给出了方法不同的名称。这是基架机制在前面的示例中做了什么。然而,这介绍了一个小问题︰
ASP.NET 将线段的 URL 映射到操作方法的名字,和如果你重命名的方法,通常路由将无法找到该方法。解决方案是您在示例中,将
ActionName("Delete")属性添加到
DeleteConfirmed方法就是看到了什么。这有效地执行映射路由系统这样一个包含/Delete/的
POST 请求 URL 将找到的
DeleteConfirmed方法。
另一种常见的方式,为避免与具有相同名称和签名的方法的问题是人为地改变 POST 方法,包括未使用的参数的签名。例如,一些开发人员添加参数类型
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 数据库。你可以创建、读取、 更新、 删除和搜索电影。
![](https://media-www-asp.azureedge.net/media/46620/gx.png)
接下来的步骤
已经建立和测试web 应用程序之后下, 一步是将它提供给其他人使用互联网。要做到这一点,必须将其部署到 web 宿主提供程序。Microsoft
提供了免费的虚拟主机中蔚蓝试用帐号的达
10 web 站点。我建议你下一步按照我的教程会员、
OAuth,与 SQL Azure 数据库安全的 ASP.NET MVC 应用程序部署。优秀的教程是汤姆戴克斯特中间级创建
ASP.NET MVC 应用程序中的实体框架数据模型。计算器和ASP.NET
MVC 论坛是一个伟大的地方问问题。跟着我在
twitter 上,所以你可以在我最新的教程上的更新。
反馈是欢迎的。
— —里克
· 安德森twitter: @RickAndMSFT
— —斯科特静态twitter: @shanselman
-----------------------------------------------------------------------------------------
《ASP.NET MVC 5 入门指南》12篇文章汇总如下:
1. ASP.NET MVC 5 - 入门
2. ASP.NET MVC 5 - 控制器
3. ASP.NET MVC 5 - 视图
4. ASP.NET MVC 5 - 添加一个模型
5. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
6. ASP.NET MVC 5 - 从控制器访问数据模型
7. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
8. ASP.NET MVC 5 - 将数据从控制器传递给视图
9. ASP.NET MVC 5 - 添加搜索
10. ASP.NET MVC 5 - 给电影表和模型添加新字段
11. ASP.NET MVC 5 - 给数据模型添加校验器
12. ASP.NET MVC 5 - 查询Details和Delete方法
希望这些文章对感兴趣的朋友有所帮助
相关文章推荐
- ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 - 查询Details和Delete方法
- [转]ASP.NET MVC 5 - 查询Details和Delete方法
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
- 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解
- 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解
- MVC 5 - 查询Details和Delete方法
- asp.net mvc + dwz 分页查询的详细使用方法
- ASP.NET MVC 学习8、Controller中的Detail和Delete方法
- asp.net MVC + linq to Entity简单教程(四)linq to Entity查询中其它方法的使用
- ASP.NET MVC 入门 (十)——查看Detail 和Delete 方法
- ASP.NET MVC 3 (Implementing Edit, Details, and Delete Views) (9/9)
- APS.NET_MVC5学习笔记- 查询Details和Delete方法
- ASP.NET MVC 3 (Implementing Edit, Details, and Delete Views) (9/9)
- asp.net MVC + linq to Entity简单教程(四)linq to Entity查询中其它方法的使用
- ASP.NET MVC 3 (Implementing Edit, Details, and Delete Views)