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

调用Ajax POST请求时MVC控制器接收值为null的问题求助

解决MVC Ajax POST传字符串时控制器参数为null且500错误的问题

问题分析

直接将JSON字符串作为data传递给Ajax请求时,MVC默认的模型绑定器无法将请求内容匹配到控制器的string jsonData参数,导致参数为null,同时因绑定失败触发500内部服务器错误。

解决方案(无需修改参数为类类型)

提供两种可行方案,任选其一即可:

方案1:用键值对包装字符串(适配默认表单编码)

修改Ajax请求的data属性,将已序列化的JSON字符串包装为与控制器参数名一致的键值对:

function ExportToExcel() {
    jsonData = gridData; // gridData已经是JSON.stringify后的字符串,无需二次序列化
    $.ajax({
        type: "POST",
        url: '/Home/ExportToExcel/',
        dataType: 'text',
        traditional: true,
        // 关键:将字符串包装为键值对,键名与控制器参数名完全一致
        data: { jsonData: jsonData },
        success: function (result) {
            console.log(result);
        },
        error: function (data) {
            console.log(data);
        }
    });
}

控制器代码保持不变:

[HttpPost]
public ActionResult ExportToExcel(string jsonData)
{
    try
    {
        DataTable dt;
        // 后续业务逻辑处理
    }
    catch (Exception ex)
    {
        // 捕获异常便于排查问题
        return new HttpStatusCodeResult(500, ex.Message);
    }
}

方案2:设置JSON contentType并添加[FromBody]特性

直接传递JSON字符串,但需明确告知服务器请求体格式,并在控制器参数上添加[FromBody]特性:
修改Ajax请求,添加contentType设置:

function ExportToExcel() {
    jsonData = gridData; // 已序列化的JSON字符串
    $.ajax({
        type: "POST",
        url: '/Home/ExportToExcel/',
        dataType: 'text',
        contentType: 'application/json', // 关键:指定请求体为JSON格式
        data: jsonData, // 直接传递已序列化的字符串
        success: function (result) {
            console.log(result);
        },
        error: function (data) {
            console.log(data);
        }
    });
}

修改控制器参数,添加[FromBody]特性:

[HttpPost]
public ActionResult ExportToExcel([FromBody] string jsonData)
{
    try
    {
        DataTable dt;
        // 后续业务逻辑处理
    }
    catch (Exception ex)
    {
        return new HttpStatusCodeResult(500, ex.Message);
    }
}

关键注意点

  • 不要对gridData进行二次JSON.stringify:gridData已经是序列化后的字符串,二次序列化会导致内容被转义,增加后续解析的复杂度。
  • 500错误的核心原因是请求内容与控制器参数的绑定规则不匹配,调整传递方式后即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:57:55