2012-01-12 44 views
7

我想盡可能使用適當的HTTP方法。在這種情況下,當點擊一個按鈕來刪除某個東西時,我想用屬性[HttpDelete]來觸發控制器操作。但是,我似乎無法使用此方法創建表單 - 使用Razor語法。該FormMethod枚舉不具有Delete一個選項,並執行以下操作不會覆蓋它:在Html.BeginForm()中使用DELETE表單方法?

@using (Html.BeginForm("Order", "Users", FormMethod.Post, new { method = "DELETE" })) 

搜索解決方案的國債收益率沒有,是沒有人這樣做呢?我知道我可以使用POST,但是這不是HTTP刪除方法的起點嗎?

+0

Joeri JANS是正確的。在MVC中,您需要欺騙操作方法,使其認爲POST是DELETE(或PUT)。 – danludwig 2012-01-12 14:35:12

回答

20

你需要這個在你的形式:

@using (Html.BeginForm("Order", "Users"){ 
    @Html.HttpMethodOverride(HttpVerbs.Delete) 
} 
+2

額外信息: HTML規範不允許任何除「get」或「post」之外的任何形式的表單方法,因此MVC必須檢查HttpMethodOverride創建的隱藏輸入,然後假定發送了此謂詞。 – 2012-01-12 14:36:47

+0

謝謝JoJa。基督徒,如果它不在HTML規範中,那麼我認爲我應該堅持使用POST ...? – 2012-01-12 21:57:02

+0

HTML5規範支持DELETE和PUT – Betty 2012-03-20 00:41:55