2008-11-10 76 views
16

我有一個ASP.NET MVC項目,我有一個接受GET,POST和DELETE請求的動作。每種類型的請求都通過我的控制器Action方法上的屬性進行過濾。是否可以從HTML表單中觸發HTTP DELETE請求?

[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方法我應該使用?

回答

13

我不相信這是可能的。 HTML4 & XHTML 1.0中的表單元素的方法屬性將只接受GET或POST。另外,大多數Web服務器的標準配置將拒絕DELETE和PUT請求。假設你已經配置你的服務器,以允許像PUT方法/ DELETE(如做的WebDav),然後你可以創建自己的HTTP請求:

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

,並適當地處理它。但是,無法通過當前的HTML表單執行此操作。爲了利益的緣故,在HTML5中有DELETE支持的some discussion

+0

偉大的回答謝謝歐文! – 2008-11-10 07:43:41

7

使用XMLHttpRequest,它不僅是「最佳實踐」,它確實是唯一的方法。

相關問題