首页 > 解决方案 > GET 方法有效,DELETE 方法抛出 400

问题描述

我正在开发一个 ASP.NET Core 网站并从控制器调用方法。我想创建一种删除实体的方法,并希望[HttpDelete]用于语义目的。

如果我[HttpGet]在 Controller 方法中使用标签并尝试通过 JQuery 访问它,它可以工作:

公司控制人:

[HttpGet]
[Route(nameof(DeleteSite))]
public ActionResult DeleteSite(int id)
{
    return Json("ok");
}

查询请求:

$.ajax({
    url: "@Url.Action("DeleteSite","Company")?id=" + currentSiteIdToDelete,
    type: "GET",

    success: function (e) {
        console.log("yay")
    })

如果我尝试将方法切换到DELETE,它开始抛出 400 Bad Request 错误,在控制器和调用中更改它:

公司控制人:

[HttpDelete]
[Route(nameof(DeleteSite))]
public ActionResult DeleteSite(int id)
{
    return Json("ok");
}

查询请求:

$.ajax({
    url: "@Url.Action("DeleteSite","Company")?id=" + currentSiteIdToDelete,
    type: "DELETE",

    success: function (e) {
        console.log("yay")
    })

DELETE方法还有其他需要工作的东西吗?我不能使用currentSiteIdToDelete在客户端编译的路由参数,我打算使用它@Url.Action()来到达控制器。

标签: jqueryasp.net-corehttprequest

解决方案


推荐阅读