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

查询详细信息和删除记录

打开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会导致出现数据错误。

查看DeleteDeleteConfirmed方法。

?
// 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");
}

请注意,DeleteHTTP 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 方法,包括未使用参数的签名。例如,有些开发人员添加参数类型 FormCollectionFormCollection是会传递给 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 数据库中存储数据。您可以创建、 读取、 更新、 删除和搜索电影。

如果您想要部署应用程序,最好先在您本地的IIS 7 服务器上测试一下您的应用程序。您可以使用此 Web Platform Installer 链接启用IIS服务器的 ASP.NET 应用程序的设置。请参阅下面的部署链接:

· Test your ASP.NET MVC or WebForms Application on IIS 7 in 30 seconds

· ASP.NET Deployment Content Map

· Enabling IIS 7.x

· Web Application Projects Deployment

现在鼓励您开始学习中级内容 Creating an Entity Framework Data Model for an ASP.NET MVC Application 和 MVC Music Store 教程, 浏览 ASP.NET articles on MSDN,的文章,再看看很多的视频和资源:http://asp.net/mvc来了解更多关于 ASP.NET MVC 的信息 ! ASP.NET MVC forums 论坛是一个好地方,可以用来问您想要知道的问题。

原文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/07/2948000.html

09、查询详细信息和删除记录相关推荐

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

    在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. ? Code First 使得您可以轻松的使用Find方法来搜 ...

  2. 苏州公交实时查询api 根据线路编码查询详细信息

    苏州公交实时查询api-苏州公交状态实时跟踪,根据线路编码查询详细信息. 接口名称:苏州公交实时查询api 接口平台:api接口 接口地址:http://apis.juhe.cn/szbusline/ ...

  3. python爬取天猫_Python如何抓取天猫商品详细信息及交易记录

    本文实例为大家分享了Python抓取天猫商品详细信息及交易记录的具体代码,供大家参考,具体内容如下 一.搭建Python环境 本帖使用的是Python 2.7 涉及到的模块:spynner, scra ...

  4. 词典api,根据成语查询详细信息

    词典api,根据成语查询详细信息,如:详解.同义词.反义词.读音等信息 接口名称:词典api 接口平台:api接口 接口地址:http://v.juhe.cn/chengyu/query 支持格式:j ...

  5. isbn书号查询api,根据图书ISBN查询详细信息

    isbn书号查询api,根据图书ISBN查询详细信息,目前支持 京东,当当,博库电商图书. 接口名称:isbn书号查询api 接口平台:开放接口 接口地址:http://v.juhe.cn/ebook ...

  6. GIS添加图层、查询详细

    GIS图层查询详细信息 撰写时间:2019年1月16日星期三 作者:邓李庆 下面我来展示一下简单的查询图层详细信息 首先我们要创建一个地图的对象,添加LayerSwitcher控件map : 获取图层 ...

  7. 二十六:交易详细信息

    功能需求 用户在交易主页面,点击交易名称超级链接,跳转到交易明细页面,完成查看交易明细的功能. *显示交易的基本信息 *显示交易的备注信息 *显示交易的历史信息 *显示交易的阶段图标信息 流程图 后端 ...

  8. 【Git】Git 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )

    文章目录 一.查询提交记录哈希码 1.git log --pretty=oneline --abbrev-commit 2.git reflog 二.为某个提交设置标签 git tag v1.0 23 ...

  9. JavaScript基础12-day14【DOM查询(获取元素节点、获取元素节点的子节点)、全选练习、DOM增删改、DOM添加删除记录、Window对象方法】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

最新文章

  1. ssh客户端避免超时的设置
  2. 在windows上解压linux文件夹,Win10如何使用命令行来解压缩文件?
  3. IntelliJ IDEA 导入 IntelliJ IDEA 创建好的JavaWeb项目!
  4. 50 亿观众的 “云上奥运”,顶级媒体背后的数智化力量
  5. php抓取动态数据,php+ajax实现无刷新动态加载数据技术
  6. zookeeper学习02 使用
  7. Unity3d学习日记(四)
  8. 【python】-- Django ModelForm
  9. 网络安全——lcx的使用
  10. 论数据库运维的全流程管控技术
  11. 向NS2中添加协议PING
  12. UVa10019:Funny Encryption Method
  13. BZOJ1863 [ZJOI2006]trouble 皇帝的烦恼 [思维题,二分答案,动态规划]
  14. New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了
  15. Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数[转]
  16. TJA1043收发器信息梳理
  17. 博客园12月份第3周51Aspx源码发布详情
  18. 12306订票助手java_GitHub - boyjunpeng/12306-hunter: 开源免费Java Swing C/S版本12306订票助手...
  19. 人工智能时代企业获客仅需一键即可完成拓客操作,批量获取信息
  20. Nutanix:疫情中积极前行,推动企业向云转型

热门文章

  1. vuex 源码分析_vue源码解析之vuex原理
  2. 计算机等级考试进制转换,计算机等级考试进制转换及常用函数
  3. rclone 访问web界面
  4. 有什么靠谱的Python培训机构
  5. 计算机网络-自顶向下笔记-应用层-P2P应用
  6. METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS 翻译(六)
  7. GoogleMap+renderDoc获取地图3D模型
  8. zuk如将手机更新到Android10,ZUI新升级:ZUK宣布支持全机型升级Android N系统
  9. 伺服驱动器生产文件_伺服驱动器程序源代码 程序源代码文件
  10. 计算机毕业论文有必要建模吗,本科生真有必要写毕业论文吗