ASP.NET MVC jQuery删除链接
创始人
2024-04-22 02:30:34
0

在最近的一个帖子里,Stephen Walther指出了使用过一个超链接来删除数据的危险性。这篇文章对这方面问题进行了很好的阐述。不过这类问题不仅仅局限于删除操作。任何时候,你如果允许一个GET请求来修改数据的话,你就可能实在自找麻烦。这里有一个很久以前发生在BackPack身上的故事,你可以看一下就知道我的意思了。

之所以jQuery删除操作值得我们格外注意是因为这是最常见的一个使用超链接修改信息的情况。如果你要修改一个产品记录,那你可能会采用一个表格(form)。不过删除操作通常只需要一个参数(就是要删除记录的id),而我们很容易在GET请求的URL中夹带这个***的参数。

如果你在使用jQuery,一个很简单的将任何超链接转换成POST连接的方法是通过将以下代码赋给onclick属性值:

$.post(this.href); return false;

比如

  1. < a href="/go/delete/1" onclick="$.post(this.href); return false;">Delete< /a> 

这段代码会向/go/delete/1发送一个POST请求而不是一个GET请求。当然,你也需要在服务器端做必要的规定,在asp.net mvc中,这很简单:

  1. [AcceptVerbs(HttpVerbs.Post)]public ActionResult Delete(int id) {  //Delete that stuff!} 

AcceptVerbs属性规定了这个action方法只响应POST请求,而GET请求将被忽略。

至此,你应该很容易编写专门用于delete链接的帮助函数了。我通常会编写很专用的帮助函数,比如:Html.DeleteProduct或Html.DeleteQuestion. 这里有我正在编写的一个示例程序中的一段jQuery删除功能的代码:

  1. public static string DeleteAnswerLink(this HtmlHelper html, string linkText  , Answer answer) {    return html.RouteLink(linkText, "answer",        new { answerId = answer.Id, action = "delete" },         new { onclick="$.post(this.href); return false;" });} 

这个方法的优点在于你可以充分利用现存的帮助函数而只需通过onclick属性来增加最少量的额外内容来达到目的。

希望这个帖子以及Stephen的帖子能帮助你编写更安全的jQuery删除操作。

【编辑推荐】

  1. ASP.NET关机代码(Windows为本机)
  2. ASP.NET QueryString乱码解决问题
  3. ASP.NET画面跳转实现及其传值问题解决方案
  4. ASP.NET Web应用程序用户操作信息描述类
  5. ASP.NET之父强烈推荐:ASP.NET AJAX著作

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...