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

Jquery与Asp.Net MVC通过Ajax向控制器传对象时参数始终为空

解决jQuery传递对象数组到ASP.NET MVC控制器参数为null的问题

我来帮你排查一下这个问题,这种参数为null的情况在MVC和jQuery交互时挺常见的,咱们一步步来分析:

首先看你贴的前端代码,第一个明显的问题就是DOM选择器错误:你写的$("countriesSelection")缺少了ID选择器的#前缀,应该写成$("#countriesSelection"),不然jQuery找不到对应的元素,selectedCountries数组会是空的,传去控制器自然就是null了。

接下来,就算你正确获取了数组,AJAX请求的配置如果不对,MVC的模型绑定器也没法正确解析数据,这是另一个高频坑。我把修正后的完整前端代码给你参考:

var selectedCountries = [];
var id = 1;
// 修正ID选择器,加上#
$("#countriesSelection").find('span').each(function() {
    var countryName = $(this).text();
    var profile1 = {};
    profile1.id = id;
    profile1.countryName = countryName;
    selectedCountries.push(profile1);
    id++; // 建议这里id自增,不然所有对象的id都是1哦
});

// 发送AJAX请求的关键配置
$.ajax({
    url: "/YourController/YourActionMethod", // 替换成你的控制器和Action路径
    type: "POST",
    contentType: "application/json; charset=utf-8", // 必须设置这个,告诉服务器请求是JSON格式
    data: JSON.stringify(selectedCountries), // 把JS数组转成JSON字符串再发送
    success: function(response) {
        console.log("数据提交成功!", response);
    },
    error: function(xhr, status, err) {
        console.error("提交失败:", err);
    }
});

然后看控制器这边的配置,也需要对应调整:

  1. 首先要给Action标记[HttpPost]特性,因为GET请求不适合传递复杂对象数组;
  2. 要创建一个和前端对象结构匹配的模型类,让MVC能正确绑定数据:
// 先定义对应的模型类
public class CountryProfile
{
    public int Id { get; set; }
    public string CountryName { get; set; }
}

// 控制器中的Action方法
[HttpPost]
public ActionResult YourActionMethod(List<CountryProfile> selectedCountries)
{
    // 现在selectedCountries应该就能接收到数据了
    if (selectedCountries != null && selectedCountries.Any())
    {
        // 这里写你的业务逻辑
    }
    return Json(new { Success = true, Message = "数据已接收" });
}

最后再补充几个容易忽略的细节:

  • 属性名匹配:前端的id、countryName要和后端模型的Id、CountryName对应(MVC模型绑定大小写不敏感,但保持一致更稳妥);
  • jQuery版本:你用的2.1.1版本支持JSON.stringify,如果是更老的jQuery版本,可能需要额外引入json2.js来支持JSON序列化;
  • 控制台排查:打开浏览器开发者工具的控制台,看看有没有DOM选择错误、AJAX请求的404/400报错,这些信息能快速帮你定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:15:31