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

使用Ajax传递JSON至ASP.NET Core控制器时数据全部为空的问题

解决Ajax传JSON到ASP.NET Core控制器参数为空的问题

问题原因

当你以application/json格式发送JSON请求体时,ASP.NET Core默认不会自动将JSON中的属性映射到Action的单个参数上,必须通过模型绑定或者调整请求编码方式来实现数据接收。

解决方案

方案一:用DTO模型接收JSON数据

这是最规范的做法,适合复杂参数场景:

  1. 定义匹配JSON结构的模型类:
public class PrivateChatRequest
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string ConnectionID { get; set; }
}
  1. 修改控制器Action,添加[FromBody]特性绑定模型:
public IActionResult PrivateChat([FromBody] PrivateChatRequest request)
{
    // 此时request.Id、request.Username、request.ConnectionID可正常获取传入值
}

你的Ajax代码不需要修改,保持当前的JSON.stringify和contentType配置即可。

方案二:调整Ajax请求为表单编码格式

如果不想创建模型类,可以修改Ajax配置,改用表单编码传递数据:

function AjaxPost(url, data) {
    $.ajax({
        url: url,
        type: 'POST',
        // 移除JSON相关配置,默认使用application/x-www-form-urlencoded
        data: data, // 直接传递对象,无需JSON序列化
        success: function (response) {
            //成功回调代码
        },
        error: function (err) {
            console.error(err);
        }
    });
}

此时原控制器的单个参数可以直接接收到值,无需修改Action代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:23:13