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
相关产品推荐
相关产品推荐

