为 @Ajax.ActionLink 设置 DELETE 谓词



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

@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 来指示它应该是一个删除调用。如何进行删除调用?

处理data-ajaxdata-ajax-method属性的 JavaScript 包是 用于 jquery 的 Microsoft 不显眼的 ajax 包。要启用它,您需要执行以下操作。

首先从包管理器控制台使用 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 包包含在内,但默认情况下它不包含在视图中

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

最新更新