带有HttpMethod = DELETE的ActionLink不起作用

时间:2014-03-15 00:08:28

标签: c# ajax asp.net-mvc-5 actionlink http-delete

我尝试为我的mvc-application实现DELETE方法。

我的链接放在了视图中:

@Ajax.ActionLink("Delete", "Delete", "Users", new { userId = user.Id }, new AjaxOptions { HttpMethod = "DELETE" })

有我的控制器方法:

[HttpDelete]
public ActionResult Delete(string userId)
{
    //...
    return View("Index");
}

当我点击删除链接时,我收到404错误。

在Fiddler我看到,我的请求是通过GET方法完成的! 如果我使用来自Fiddler的相同Headers执行DELETE请求,我会得到预期的结果 - 我的请求正在进入Delete方法。

如何正确使用@Ajax.ActionLink

P.S。:我只想使用内置方法。

2 个答案:

答案 0 :(得分:2)

您确定所有Unobtrusive库都已加载吗? @Ajax.ActionLink生成标准锚标记。如果没有加载JavaScript库来处理点击事件,您将获得您在Fiddler中看到的GET请求。

检查jquery.unobtrusive-ajax.js脚本是否包含在从布局页面引用的包中,或者您是否在脚本区域中的特定页面上显式加载它。

答案 1 :(得分:0)

试试这个:

@Ajax.ActionLink("Delete", "Delete", "Users", 
  new { userId = user.Id }, 
  new AjaxOptions { HttpMethod = "POST" })

我不确定您为什么使用'删除'作为HTTPMethod。 Post会将您要删除的数据的Id发送到服务器,并调用此处指定的“删除”ActionResult @Ajax.ActionLink("Delete", "Delete", "Users",