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

MVC前端JS二维数组经AJAX传参时控制器仅能接收为一维如何解决

问题根源

你设置traditional: true后,jQuery序列化嵌套数组时会直接调用内层数组的toString()方法,把每个内层数组转为逗号拼接的字符串,所以后端只能拿到一维字符串数组。而string[,]这类固定维度的多维数组,ASP.NET MVC默认模型绑定器本身不支持直接绑定,所以会触发500错误。


最优解决方案:传递JSON格式数据

这是兼容性最高、适配所有嵌套结构的方案,修改AJAX配置和后端接收逻辑即可:

  1. 前端AJAX修改:将参数序列化为JSON字符串,指定请求内容类型为JSON,删除traditional配置:
$.ajax({
    type: "POST",
    url: "@Url.Action("SaveChanges")",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ tableValueList: tableValueList }),
    dataType: 'json',
    success: function (data) {
        // 成功逻辑
    }
});
  1. 后端控制器修改:参数前加[FromBody]特性,使用嵌套列表或交错数组接收:
public JsonResult SaveStationConfigChanges([FromBody] List<List<string>> tableValueList)
{
    // 业务逻辑
}

修改完成后即可直接拿到结构化的二维数据,不需要手动拆分字符串。


可选方案:使用默认jQuery序列化

如果不想传JSON,可以删除traditional: true配置,jQuery会自动将二维数组序列化为tableValueList[0][0]=xxx&tableValueList[0][1]=xxx的键值对格式,后端直接用List<List<string>>类型接收即可,不需要加[FromBody]特性。该方案仅适用于嵌套层级不高的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:12