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

Eri*_*ver 16 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)
Run Code Online (Sandbox Code Playgroud)

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

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

Owe*_*wen 13

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

DELETE /resource.html HTTP/1.1
Host: domain.com
Run Code Online (Sandbox Code Playgroud)

并妥善处理.但是,没有办法通过当前的HTML表单执行此操作.为了感兴趣,HTML5中有一些关于 DELETE支持的讨论.


小智 7

使用XMLHttpRequest,它不仅是"最佳实践",它实际上是唯一的方法.