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

jQuery Ajax调用WebApi控制器模型绑定失败,参数接收为null

解决jQuery向WebApi传递数据时参数为null的问题

我来帮你搞定这个WebApi参数绑定的问题,这其实是请求格式和模型绑定规则不匹配导致的,一步步来修正:

核心问题拆解

  1. 请求格式不对:jQuery的$.ajax默认会把对象转成application/x-www-form-urlencoded格式的请求体,但WebApi的[FromBody]特性默认只认application/json格式的请求数据,所以参数绑不上。
  2. 模型类不符合绑定要求:你的FunValues用的是公共字段public string textValue;,而WebApi的模型绑定系统优先识别带getter和setter的属性,字段大概率会被忽略。

具体修复步骤

1. 调整jQuery的AJAX请求

必须显式指定请求格式为JSON,并且把数据对象转成JSON字符串:

$.ajax({ 
    url: "api/ApiTest/MyMethod", 
    method: "POST", 
    contentType: "application/json", // 关键:告诉后端请求体是JSON格式
    data: JSON.stringify({ textValue: "This is text" }), // 把对象转为JSON字符串
    success: function (result) { 
        console.log("SUCESS: " + result); 
    }, 
    error: function (data) { 
        console.log("error: " + data.responseText); 
    } 
});

2. 修改WebApi的模型类

把公共字段改成带get/set的属性:

public class FunValues { 
    public string textValue { get; set; } // 改为属性,添加get和set方法
}

3. 保留控制器的[FromBody]特性

这个特性是告诉WebApi从请求体里读取数据绑定到模型,不能丢:

[HttpPost] 
public string MyMethod([FromBody] FunValues values) { 
    return "your string is " + values.textValue; 
}

为什么之前的尝试没用?

  • 移除[FromBody]后,WebApi会去URL或者form表单里找参数,但你的数据在请求体里,而且是form-urlencoded格式,这种情况下[FromBody]才能正确读取请求体内容,移除后自然拿不到值。
  • 直接传简单字符串时没拿到结果,也是因为没设置正确的contentType和JSON格式,WebApi无法解析请求体里的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:23:54