You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中Ajax POST请求异常:控制器接收id始终为0

解决ASP.NET MVC删除请求中控制器接收id始终为0的问题

核心解决方案:添加[FromBody]特性

你遇到的问题是模型绑定方式不匹配:前端发送的是JSON格式的请求体,但ASP.NET MVC默认不会从JSON请求体中绑定简单类型(比如int)的参数,需要显式告诉框架从请求体读取参数。

修改控制器的Delete方法,在id参数前添加[FromBody]特性即可:

[HttpPost]
public JsonResult Delete([FromBody] 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." });
}

额外排查点(可选)

  • 确保前端传递的id是数字类型:如果前端的id是字符串(比如从DOM元素获取的文本值),可以在发送前转为数字,修改AJAX的data部分:
    data: JSON.stringify({id : parseInt(id)}),
    
  • 用浏览器开发者工具验证请求:打开Network标签,查看发送的请求Payload,确认是{"id": 你的目标数值}格式,确保前端确实发送了正确的JSON数据。
  • 检查路由配置:确认项目路由没有覆盖Delete方法的参数绑定逻辑,默认路由配置一般不会影响POST请求的参数读取。

内容的提问来源于stack exchange,提问作者Pedro Henrique Miranda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:12:41