代码之家  ›  专栏  ›  技术社区  ›  Eric Schoonover thSoft

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

  •  16
  • Eric Schoonover thSoft  · 技术社区  · 16 年前

    我有一个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 /> (link)这将导致浏览器执行HTTP删除请求并触发我的graphDelete方法。

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

    2 回复  |  直到 14 年前
        1
  •  13
  •   Owen Ryan Doherty    16 年前

    我不相信这是可能的。HTML4&xHTML 1.0中表单元素的method属性只接受get或post。此外,大多数Web服务器的标准配置将拒绝删除和放置请求。假设您已将Web服务器配置为允许Put/Delete等方法(如WebDAV),则可以创建自己的HTTP请求:

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

    并妥善处理。但是,无法通过当前的HTML表单来实现这一点。为了兴趣,有 some discussion 用于删除HTML5中的支持。

        2
  •  7
  •   Scott McCoy    15 年前

    使用XMLHttpRequest,这不仅是“最佳实践”,而且是唯一的方法。