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

使用AJAX向Controller传递JSON对象数组时遇空值问题

解决AJAX传递对象数组到Controller时接收为Null的问题

我来帮你排查一下这个问题,你遇到的情况在ASP.NET MVC中很常见,主要是模型绑定的规则没匹配上,咱们一步步来解决:

1. 先确认后端模型类与参数接收的正确性

首先,你需要确保后端定义的Itemspec类和前端对象的属性名完全一致(C#和JS都是大小写敏感的,必须严格匹配),同时Controller的Action要正确配置参数接收数组:

// 后端模型类,属性名要和前端对象完全对应
public class Itemspec
{
    public int ItemID { get; set; }
    public int PropertyID { get; set; }
    public string Value { get; set; }
    public int ValueID { get; set; }
}

// Controller中的Action,注意参数名要和前端传递的键名一致
public class YourController : Controller
{
    [HttpPost] // 必须标记HttpPost,和AJAX的请求类型对应
    public ActionResult YourActionName(List<Itemspec> itemspecs)
    {
        // 这里就可以正常处理数组数据了
        return Json(new { success = true });
    }
}

2. 修正AJAX请求的关键配置

你已经设置了jQuery.ajaxSettings.traditional = true,但对于对象数组来说,更可靠的方式是用JSON格式传递,需要补充两个核心配置:

// 你的Itemspecs数组
var Itemspecs = [
    { ItemID: 0, PropertyID: 7, Value: "hj", ValueID: 0 },
    { ItemID: 0, PropertyID: 8, Value: "Red", ValueID: 0 },
    { ItemID: 0, PropertyID: 19, Value: "jh", ValueID: 0 }
];

$.ajax({
    type: 'POST',
    url: '/YourController/YourActionName', // 替换成你的实际接口路径
    cache: false,
    traditional: true,
    contentType: 'application/json; charset=utf-8', // 关键:明确指定请求为JSON格式
    data: JSON.stringify({ itemspecs: Itemspecs }), // 关键:把数组包装在和后端参数名一致的对象里,转成JSON字符串
    success: function(response) {
        console.log('请求成功:', response);
    },
    error: function(xhr, status, error) {
        console.error('请求失败:', error);
    }
});

3. 排查验证步骤

做完上面的配置后,你可以用浏览器开发者工具(F12 → Network标签)检查请求:

  • 查看请求的Request Payload,确认内容是类似{"itemspecs":[{"ItemID":0,"PropertyID":7,...},...]}的标准JSON格式
  • 确认请求的Content-Type确实是application/json; charset=utf-8
  • 如果还是接收为null,检查Action的参数名和前端JSON中的键名是否完全一致(比如前端是itemspecs,后端不能写成Itemspecs)

常见误区提醒

  • 不要直接传递数组data: Itemspecs,必须包装在一个对象里,让模型绑定器能识别对应的参数
  • 不要忽略contentType配置,默认的application/x-www-form-urlencoded格式无法正确序列化复杂对象数组
  • 确保Action标记了[HttpPost],否则会被当作GET请求处理,无法接收POST数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:05:46