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

ASP.NET MVC中通过AJAX传递对象列表时控制器接收值为null如何解决

问题解决方法

核心错误1:前端提交对象类型错误

你的JS代码中循环内声明const saveDetail = [];创建的是数组对象,给数组附加的自定义属性不会被JSON.stringify序列化,最终提交的请求体是空数组组成的列表,后端无法匹配实体类结构,因此得到null。
修改方案:将数组声明改为普通对象声明即可:

// 把 const saveDetail = []; 替换成下面的代码
const saveDetail = {};

核心错误2:控制器参数缺少[FromBody]特性

ASP.NET Web API/.NET 框架中,POST请求传递JSON格式的复杂类型参数时,默认会从QueryString、表单字段中读取参数,不会主动解析请求体的JSON内容,因此需要显式加[FromBody]特性指定参数来源。
修改方案:调整控制器方法参数如下:

[HttpPost]
[Authorize]
[Route("api/Master/Workflow/InsertRefFieldClone")]
// 给参数加[FromBody]
public bool InsertRefFieldClone([FromBody] List<BusinessEntities.Master.CurrentProcessNameAndBucketName> item)
{
    // 原有逻辑不变
}

其他可选排查点

  • 确认所有int类型的字段没有传递空字符串、null等无法转换为整数的数值,类型不匹配会触发全局反序列化失败,参数直接被赋值为null
  • 可以在浏览器控制台打印console.log(JSON.stringify(data)),检查输出的JSON结构是否和实体类列表结构一致,字段名拼写完全匹配
  • 临时去掉[Authorize]特性测试,排除鉴权中间件拦截导致参数未正常解析的可能性

内容的提问来源于stack exchange,提问作者Ibrahim shaikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:04