在MVC3中创建删除链接的正确方法是什么?

时间:2012-09-19 19:14:44

标签: asp.net-mvc asp.net-mvc-3 actionlink

起初我只使用Html.ActionLink方法创建了删除链接。但后来我跑过一篇文章,说那是错的。不应该那样使用。然后建议大师 - >细节方式。但这似乎很愚蠢。应该有一种方法让我有一个删除链接(“你确定”的提示),但仍然不是一个安全漏洞。正确?

3 个答案:

答案 0 :(得分:1)

是的,使用GET方法删除数据是不好的做法。你需要使用POST方法,它可以完成,例如使用form或jquery / javascript。但请注意,如果您使用附加promt的简单链接,用户可以单击中心按钮并删除数据或javascript可以被禁用。此外,这也是一个安全问题,有人可以给你链接,你从服务器删除一些数据。

示例:

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

如果服务器获得GET到/ controller / delete / x然后提供一个带有POST表单的确认页面(在此表单上我们放了两个按钮YesNo,第一个按钮提交表单隐藏的字段)。如果服务器获得POST(或可能是DELETE)请求,则执行删除操作。

答案 1 :(得分:1)

该问题与链接或ActionLink或类似内容无关。问题是你不应该有对HttpGet请求删除的操作方法。

至于为什么你不应该这样做。想象一下,您的老板已经对您的在线员工档案进行了谴责。如果您碰巧知道此应用程序删除带有Get请求的记录,那么您只需要创建一个特制的页面,其中img标记包含删除您的训斥的URL,然后将其放在公司主页上。最终,有权删除这些条目的人会进入网页并噗..你有一个清晰的记录。

这可能不是那么糟糕。你只是提高了你的地位。但是想象一下你的同事对你很生气,而且他知道一个类似的伎俩会让他欺骗你的老板降低工资。

不再那么好笑了。

允许这些或行动是不安全的,因为它们可以在用户不知道他们正在做什么的情况下被触发。

答案 2 :(得分:0)

在下面的文章中,他们描述了一种很好的方式来做你正在寻找的东西: Simple jQuery Delete Link For ASP.NET MVC

但我觉得你真正想要的是另一种选择: ASP.NET MVC Delete ActionLink with confirm

所以你有两种选择,希望对你有帮助。