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

MVC C#中AJAX调用控制器无法接收数组数据问题求助

解决ASP.NET Core MVC中AJAX提交数据控制器接收为空的问题

我来帮你排查这个问题,你遇到的控制器editedRows集合始终为空的情况,主要有两个关键问题需要修正:

1. jQuery元素获取文本的方法错误

你在收集表格数据时,使用了innerText和textContent这些原生DOM元素的属性,但$(this).find(...)返回的是jQuery对象,并不支持这些原生属性。你需要改用jQuery提供的.text()方法来获取文本内容,同时建议加上.trim()去除多余空格,避免无效数据干扰。

修改后的JavaScript代码:

function ValidateData() {
    var editedRows = [];
    $("#eventsTable tbody tr").each(function () {
        editedRows.push({
            PK_WS_Event: $(this).find("td:eq(1)").text().trim(),
            Act_Id: $(this).find("td:eq(2)").text().trim(),
            WeeklyStatus: $(this).find("td:eq(3) option:selected").text() == "--Select--" ? "" : $(this).find("td:eq(3) option:selected").text().trim(),
            WeeklyStatusSubType: $(this).find("td:eq(4) option:selected").text() == "--Select--" ? "" : $(this).find("td:eq(4) option:selected").text().trim(),
            AccountName: $(this).find("td:eq(5)").text().trim(),
            AccountNumber: $(this).find("td:eq(6)").text().trim(),
            WeeklyStatusDesc: $(this).find("td:eq(7)").text().trim(),
        });
    });
    $.ajax({
        type: 'post',
        url: "/WeeklyStatus/IndexSubmit",
        data: JSON.stringify({ editedRows: editedRows }),
        contentType: 'application/json',
        dataType: "html",
        success: function (response) {
            // 可添加成功后的处理逻辑
        },
        error: function (xhr, status, error) {
            alert('提交失败: ' + error); // 显示错误详情更便于排查
        }
    });
}

2. 控制器参数缺少[FromBody]特性

在ASP.NET Core中,当你通过JSON格式提交请求体数据时,必须在控制器参数上标注[FromBody]特性,告诉框架从请求体中读取JSON数据并绑定到模型对象。如果没有这个特性,框架会默认尝试从查询字符串或表单数据中获取参数,自然无法接收到你通过JSON提交的数组。

修改后的控制器代码:

[HttpPost]
public IActionResult IndexSubmit([FromBody] IList<WeeklyStatusEvents> editedRows)
{
    // 现在应该能正常接收到editedRows数据了,可添加你的业务逻辑
    return null;
}

额外排查建议

  • 打开浏览器开发者工具(F12),切换到Network标签,查看AJAX请求的Payload,确认数据是否正确格式化为JSON并发送;
  • 确保WeeklyStatusEvents类的所有属性都是public且带有get/set访问器(你的代码已经满足这一点);
  • 如果问题仍存在,可以临时将参数改为[FromBody] dynamic editedRows,查看是否能接收到原始数据,进一步排查模型绑定的细节问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:09:08