是否可以从HTML表单触发HTTP DELETE请求?

时间:2008-11-10 05:52:49

标签: html asp.net-mvc

我有一个ASP.NET MVC项目,我有一个接受GET,POST和DELETE请求的动作。每种类型的请求都通过我的控制器Action方法上的属性进行过滤。

[ActionName(Constants.AdministrationGraphDashboardAction),
AcceptVerbs(HttpVerbs.Post)]
public ActionResult GraphAdd([ModelBinder(typeof (GraphDescriptorBinder))] GraphDescriptor details);

[ActionName(Constants.AdministrationGraphDashboardAction),
AcceptVerbs(HttpVerbs.Delete)]
public ActionResult GraphDelete([ModelBinder(typeof (RdfUriBinder))] RdfUri graphUri)

我的GraphAdd方法效果非常好。我想弄清楚的是我如何创建一个HTML <form /><a />(链接),它将导致浏览器执行HTTP删除请求并触发我的GraphDelete方法。

如果有办法做到这一点,可以有人发布一些示例HTML,如果有的话,我应该使用MVC HtmlHelper方法吗?

2 个答案:

答案 0 :(得分:13)

我不相信这是可能的。 HTML4&amp;中表单元素的method属性XHTML 1.0只接受GET或POST。此外,大多数Web服务器的标准配置将拒绝DELETE和PUT请求。假设您已将Web服务器配置为允许PUT / DELETE等方法(例如WebDav),则可以创建自己的HTTP请求:

DELETE /resource.html HTTP/1.1
Host: domain.com

并妥善处理。但是,没有办法通过当前的HTML表单执行此操作。为了感兴趣,HTML5中的DELETE支持有some discussion

答案 1 :(得分:7)

使用XMLHttpRequest,它不仅是“最佳实践”,它实际上是唯一的方式。