【发布时间】:2016-08-09 09:23:01
【问题描述】:
我正在尝试使用 AJAX 删除实体。在我的控制器方法中,我有:
[HttpDelete]
public ActionResult Delete(int id)
{
//Deletion logic
return Content("OK");
}
在视图中,我正在按如下方式进行 AJAX 调用:
$('#delete').click(function () {
if (confirm('Delete?')) {
var $link = $(this);
$.ajax({
url: this.href,
type: 'DELETE',
success: function (result) {
$link.parent().remove();
}
});
}
return false;
});
AJAX 链接正在构建为:
@Html.ActionLink("Delete?", "Delete", new { id = Model.Id }, new { id = "delete", @class = "delete-link" })
Delete 操作没有从链接获取请求,但如果我通过直接 URL 访问它实际上可以工作。此外,如果我删除 type: 'DELETE', 行,使其未指定,并将控制器操作行 [HttpDelete] 替换为 [HttpGet] 它也可以工作。
我的观点是它是一个DELETE 方法,我不想将它作为GET 请求处理,但我不知道我是否遗漏了其他东西。
如果你们中的任何人能帮助我理解为什么控制器操作 Delete(int id) 没有捕获来自 AJAX 链接的请求,我会很高兴。
提前致谢。
【问题讨论】:
-
this.href 的值是多少,应该匹配控制器路由。
-
@kostbone 我刚刚添加了生成 href 的方式。它的值是 localhost/{Controller}/{Action}/X 的绝对 URL,其中 X 是 int。
-
@RoryMcCrossan 我正在使用 MVC5,但我看到 [FromUri] 不可用。
-
你是对的,我的错,那是来自 WebAPI
-
@CristiPufu 我在应用程序中有许多其他 [HttpDelete] 调用,在没有 Ajax 的情况下也可以正常工作。然而,事实并非如此。所以,对我来说,这不是 IIS。我已经尝试过 Heinz 的建议,但没有奏效。
标签: c# jquery ajax asp.net-mvc-4