2011-02-04 79 views
2

我有一個Html幫助器方法,它在我的控制器上調用Delete方法。MVC:System.Web.HttpException:在控制器上找不到公共操作方法'Delete'

public static MvcHtmlString DeleteEmployeeOtherLeave(this HtmlHelper html, string linkText, Leave _leave) 
{ 
    return html.RouteLink(linkText, "Default", 
     new { _employeeOtherLeaveId = _leave.LeaveId, action = "Delete" }, 
     new { onclick = "$.post(this.href); return false;" }); 
} 

在我的控制器上,我有;

[AcceptVerbs(HttpVerbs.Delete)] 
public ActionResult Delete(int _employeeOtherLeaveId) 
{ 
    EmployeeOtherLeaf.Delete(_employeeOtherLeaveId); 

    return RedirectToAction("Payroll"); 
} 

但我得到這個運行時錯誤信息;

System.Web.HttpException: A public action method 'Delete' was not found on controller 

回答

5

在這種情況下,您的操作可能不會被髮送正確的「DELETE」動詞的HTTP請求調用。嘗試更新您的AcceptVerbs屬性以取代POST。

3

您正在發送POST請求,而您的控制器操作需要DELETE動詞。所以:

public static MvcHtmlString DeleteEmployeeOtherLeave(this HtmlHelper html, string linkText, Leave _leave) 
{ 
    return html.RouteLink(linkText, "Default", 
     new { _employeeOtherLeaveId = _leave.LeaveId, action = "Delete" }, 
     new { onclick = "$.ajax({url: this.href, type: 'DELETE'}); return false;" }); 
} 
+0

兩個答案都是正確的。 – arame3333 2011-02-04 17:17:15

1

或者您也可以在您的表單方法屬性中更改您的動詞以刪除任何方法應該工作

相關問題