C# 带有HttpMethod=DELETE的ActionLink不起作用

C# 带有HttpMethod=DELETE的ActionLink不起作用,c#,ajax,asp.net-mvc-5,actionlink,http-delete,C#,Ajax,Asp.net Mvc 5,Actionlink,Http Delete,我尝试为我的mvc应用程序实现DELETE方法 视图中有我的链接: @Ajax.ActionLink("Delete", "Delete", "Users", new { userId = user.Id }, new AjaxOptions { HttpMethod = "DELETE" }) 以下是我的控制器方法: [HttpDelete] public ActionResult Delete(string userId) { //... return View("Inde

我尝试为我的mvc应用程序实现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的相同头执行DELETE请求,我将得到预期的结果——我的请求将直接进入DELETE方法

如何正确使用
@Ajax.ActionLink


注意:我只想使用内置方法。

您确定所有不引人注目的库都已加载吗?
@Ajax.ActionLink
生成一个标准锚定标记。如果没有加载JavaScript库来处理click事件,您将获得在Fiddler中看到的get请求

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

尝试以下操作:

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

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

下一个库被加载:Modernizr v2.7.2、jQuery v2.1.0、jQuery Validation 1.11.1、Bootstrap v3.1.1、jQuery validate Untrusived链接单击正在执行GET请求这一事实告诉我某些东西没有处理单击并阻止默认行为。这表明缺少库,可能是自这与我未能将它们添加到我的特定视图时发生的情况相同。你可以尝试将HttpMethod更改为POST,看看是否有效。如果你仍然收到GET请求,我会向你指出libs可能存在的问题。如果有效,那么我们有更好的地方开始平分此问题。进行一点搜索只是为了确保DELETE是受支持的类型,这个答案建议其他人在合适的lib就位后让它工作。我发现
jquery.unobtrusive ajax.js
不包含在任何脚本包中。现在一切都正常了,谢谢!