C# 带有HttpMethod=DELETE的ActionLink不起作用
我尝试为我的mvc应用程序实现DELETE方法 视图中有我的链接: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
@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
不包含在任何脚本包中。现在一切都正常了,谢谢!