gpt4 book ai didi

c# - 向 HttpDelete 操作发送 DELETE 请求时路由不起作用

转载 作者:行者123 更新时间:2023-11-30 16:45:56 25 4
gpt4 key购买 nike

我有一个只有一个 View 的 ProductsController - Index.cshtml。

此 Controller 内部有以下 3 个操作方法:

//http://localhost:55555/products
[HttpGet]
public IActionResult Index()
{
}

//http://localhost:55555/products
[HttpPost]
public IActionResult Index(ProductViewModel product)
{
}

//http://localhost:55555/products/1
[HttpDelete("{id}")]
public IActionResult Index([FromRoute] int id)
{
}

当我转到/products 时,Get 工作得很好。当我使用/products 创建新产品时,Post 工作得很好。删除根本不起作用,我收到 404 not found for/products/9。我正在使用带有类型的标准 AJAX 请求:DELETE。

我正在使用默认的 MVC 常规路由设置:

        routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");

这是我的 AJAX 请求的样子:

$(".js-delete-product").click(function () {
$.ajax({
type: "DELETE",
url: "products/" + $(this).data("id"),
success: onDeleteSuccess
});
});

我还尝试在 postman 中向 http://localhost:55555/products/1 发送 DELETE 请求以确保它不是我的 jquery ajax,但仍未找到 404。

更新:如果我只向 http://localhost:55555/products 发送一个 DELETE 请求它进入函数,但正如您所期望的那样,id 参数设置为 null。知道为什么会这样吗?我只希望它在传递参数时进入 delete 方法,但是当传递参数时它不会进入(404 未找到)。

最佳答案

[HttpDelete] 属性中包含 id 的路由参数:

[HttpDelete("{id}")]
public IActionResult Index([FromRoute] int id)
{
}

关于c# - 向 HttpDelete 操作发送 DELETE 请求时路由不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com