博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC LocalDB数据库。在控制器里检查编辑信息和删除的方法
阅读量:5257 次
发布时间:2019-06-14

本文共 1897 字,大约阅读时间需要 6 分钟。

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);如果你不做检查 null 的电影,一个空的电影会导致数据库错误。

检查DeleteDeleteConfirmed方法。

// GET: /Movies/Delete/5public 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 请求 (或对于这一问题,需要执行的编辑操作,创建操作或更改数据的任何其他操作) 开辟了一个安全漏洞。有关详细信息,请参阅 Stephen 瓦尔特博客.

将删除数据的HttpPost 方法被命名为 DeleteConfirmed ,给出了 HTTP POST 方法独特签名或名称。两个方法签名如下所示:

// GET: /Movies/Delete/5public 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 方法,包括未使用的参数的签名。例如,一些开发人员添加参数类型  ,是传递给 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"); }

摘要

转载于:https://www.cnblogs.com/275147378abc/p/4762937.html

你可能感兴趣的文章
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>