我的ajax post请求在我的asp.net mvc项目上不起作用

问题描述 投票:0回答:1

我正在尝试向控制器发出请求,但它不起作用。第一个 console.log() 显示了正确的 id,所以我想我在 html 按钮中正确传递了它。 id参数到达控制器时始终为0。

这是视图的代码:

function Delete(id){
    
    console.log(id)

    if(!confirm("Vai excluir o produto mesmo chefe?")){

        return;
    }

    $.ajax({
        url: "/Produtos/Delete",
        method: "POST",
        contentType: "application/json",
        dataType:"json",
        data: JSON.stringify({id : id}),
        success: function(response){
            alert(response.message)
        },
        error: function(error){
            alert(error.message)
        }

    });

}

这就是控制器的方法:

[HttpPost]
public JsonResult Delete(int id)
{
    var produto =  _produtosRepository.GetById(id);

    if(produto == null)
    {
        return Json(new { success = false, message = $"Erro ao remover produto de id = {id}." });
    }
    
    _produtosRepository.Delete(produto);
    _produtosRepository.Save();

    return Json(new { success = true, message = "Produto deletado com sucesso." });
}

我尝试更改 $.ajax 来获取,但它也不起作用。我不知道该怎么办,有人可以帮助我吗?

PS:我是这个 mvc 世界的新手,所以我可能犯了一个可笑的错误,哈哈。

c# jquery ajax asp.net-mvc post
1个回答
0
投票

默认情况下,ASP.NET MVC/API 控制器操作中的

Id
参数被视为路由路径。

您不需要发送

id
作为请求正文。相反,请在路线中提供它。

$.ajax({
  url: `/Produtos/Delete/${id}`,
  method: "POST",
  contentType: "application/json",
  dataType: "json",
  success: function(response){
    alert(response.message)
  },
  error: function(error){
    alert(error.message)
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.