ASP.NET Core 8中Ajax POST请求参数始终为null问题排查
ASP.NET Core 8 Ajax POST 参数为 null 的解决方案
问题原因
你的Ajax请求中,将数据包裹在了额外的model层级中(JSON.stringify({ model })),导致请求体结构为{"model":{"p1":"a","p2":"b"}},但控制器的CallPost方法期望直接接收ParamClass类型的对象,而非包含该对象的外层结构,因此模型绑定失败,参数返回null。
解决步骤
修正Ajax请求的数据结构
直接序列化model对象,不需要额外的外层包装:$(document).ready(function () { var model = { p1: "a", p2: 'b' }; $.post({ url: "/test/callPost", data: JSON.stringify(model), dataType: "json", contentType: "application/json", success: function (data) { } }); });可选:显式指定模型绑定来源
在控制器参数上添加[FromBody]特性,明确告知框架从请求体中绑定参数,增强代码可读性:[HttpPost] [Route("callPost")] public IActionResult CallPost([FromBody] ParamClass model) { return View(); }
补充说明
由于你已经配置了AddNewtonsoftJson(),框架会自动处理驼峰命名(前端p1对应后端P1),因此属性名的大小写差异不会导致绑定失败,核心问题还是请求数据的层级结构不匹配。
内容的提问来源于stack exchange,提问作者AlexB
相关产品推荐
相关产品推荐

