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

使用jQuery Ajax传递对象列表至MVC控制器获空对象问题排查

解决MVC控制器接收空对象列表的问题

嗨,我来帮你排查这个问题!你遇到的核心问题是GET请求的特性和MVC模型绑定规则不匹配,导致对象列表没法被正确解析。下面一步步给你讲清楚问题出在哪,以及怎么修复:

问题根源

  1. GET请求不支持请求体传JSON:你设置了contentType: 'application/json',但GET请求根本不会发送请求体,这个配置完全无效。jQuery会把你传入的data转成URL查询参数,而MVC默认模型绑定器很难把这种格式的参数正确解析成复杂的对象列表。
  2. URL长度限制风险:就算想办法让GET解析列表,如果列表很长,URL会超出浏览器的长度限制,直接报错。

最优解决方案:改用POST请求

POST请求可以把JSON数据放在请求体里,配合正确配置,MVC能完美解析你的对象列表。

步骤1:修改前端Ajax代码

把请求类型改成POST,并把列表序列化为JSON字符串:

var coordList = [{"page":1,"xStart":118,"xEnd":481,"yStart":139,"yEnd":422},{"page":2,"xStart":74,"xEnd":379,"yStart":37,"yEnd":387},{"page":3,"xStart":128,"xEnd":349,"yStart":19,"yEnd":326}];

var request = $.ajax({
    type: 'POST', // 切换为POST请求
    url: Router.action("Api", "GetTable"),
    dataType: 'json',
    contentType: 'application/json; charset=utf-8', // 此配置现在生效
    data: JSON.stringify(coordList) // 将列表转为JSON字符串
});

步骤2:调整控制器方法

先确保你有对应的数据模型类,然后给控制器方法加上[HttpPost]特性,.NET Core还需额外添加[FromBody]指定从请求体读取数据:

// 定义与前端对象结构匹配的模型类
public class CoordModel
{
    public int Page { get; set; }
    public int XStart { get; set; }
    public int XEnd { get; set; }
    public int YStart { get; set; }
    public int YEnd { get; set; }
}

// 控制器方法
[HttpPost] // 标记为POST请求
public ActionResult GetTable([FromBody] List<CoordModel> coordList)
{
    // 现在coordList应该能正确接收你的数据了
    // 在这里编写业务逻辑
    return Json(new { success = true, data = coordList });
}

如果一定要用GET(不推荐)

如果因某些限制必须用GET,可以把JSON列表转成字符串参数传递,再在控制器里手动反序列化:

前端代码

var request = $.ajax({
    type: 'GET',
    url: Router.action("Api", "GetTable"),
    dataType: 'json',
    data: { coordListJson: JSON.stringify(coordList) } // 将JSON作为字符串参数传递
});

控制器代码

// 需要先通过NuGet安装Newtonsoft.Json包
public ActionResult GetTable(string coordListJson)
{
    var coordList = JsonConvert.DeserializeObject<List<CoordModel>>(coordListJson);
    // 编写业务逻辑
    return Json(new { success = true, data = coordList });
}

总结

优先选择POST方案,它不仅能解决当前的空对象问题,还能规避URL长度限制的风险,模型绑定也更稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:46