为@ Ajax.ActionLink设置DELETE谓词

时间:2016-02-10 17:55:42

标签: asp.net-mvc razor

我在ASP.NET MVC中有一个如下所示的链接:

@Ajax.ActionLink("Delete", "Delete", new { id = item.Id }, new AjaxOptions { HttpMethod = "DELETE" })

然而,当我点击它时,它的行为类似于GET链接,而Chrome调试器则说:GET http://localhost:22148/CreditCards/Delete/2001 404 (Not Found)

剃刀模板生成的html是

<a data-ajax="true" data-ajax-method="DELETE" href="/CreditCards/Delete/2001">Delete</a>

似乎是使用html5来表明它应该是一个删除调用。如何进行删除调用?

1 个答案:

答案 0 :(得分:1)

处理data-ajaxdata-ajax-method属性的javascript包是The microsoft unobtrusive ajax package for jquery。要启用它,您需要执行以下操作。

首先从包管理器控制台安装带有Install-Package Microsoft.jQuery.Unobtrusive.Ajax的nuget包。

然后将这个包添加到RegisterBundleCollection()中的App_Start/BundleConfig.cs,如下所示:

    bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
            "~/Scripts/jquery.unobtrusive-ajax*"));

最后,包括此包和jquery包_Layout.cshtml:

dd Scripts.Render("~/bundles/jquery")
dd Scripts.Render("~/bundles/jqueryajax")

虽然jquery作为带有ASP.NET MVC包的nuget包包含在内,但默认情况下它不包含在视图中

此时,您的Action链接将执行DELETE而不是GET。