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

Ajax调用C#方法始终接收null值问题求助

解决Ajax向C#方法传值为null的问题

问题原因

你当前Ajax发送的是JSON对象({ 'userId': jobId }),但后端方法期望接收单个字符串,ASP.NET MVC无法将JSON对象直接映射到单个string参数,导致jsonData始终为null。

解决方案一:直接传递字符串值

修改Ajax的data部分,直接序列化字符串本身,而非对象:

function select(jobId){
    console.log(jobId);
    $.ajax({
        url: '@Url.Action("SelectJob", "Home")',
        type: 'post',
        dataType: 'json',
        contentType: 'application/json',
        data: JSON.stringify(jobId), // 直接序列化jobId字符串
        success: function (response) {
            console.log("yes", response.message);
        },
        error: function () {
            console.log("no");
        }
    });
}

后端方法保持不变:

[HttpPost]
public ActionResult SelectJob([FromBody] string jsonData)
{
    return Json(new { success = true, message = jsonData });
}

解决方案二:使用模型类接收(推荐)

如果后续可能传递更多参数,建议创建对应模型类,更符合MVC的参数绑定规范:

  1. 定义模型类:
public class JobRequestModel
{
    public string UserId { get; set; }
}
  1. 修改后端方法:
[HttpPost]
public ActionResult SelectJob([FromBody] JobRequestModel model)
{
    // 直接使用model.UserId获取传值
    return Json(new { success = true, message = model.UserId });
}
  1. Ajax代码保持原有写法即可(发送的JSON对象与模型结构匹配):
function select(jobId){
    console.log(jobId);
    $.ajax({
        url: '@Url.Action("SelectJob", "Home")',
        type: 'post',
        dataType: 'json',
        contentType: 'application/json',
        data: JSON.stringify({ 'userId': jobId }),
        success: function (response) {
            console.log("yes", response.message);
        },
        error: function () {
            console.log("no");
        }
    });
}

额外说明

  • 当设置contentType: 'application/json'时,必须确保发送的是合法JSON格式,后端才能正确解析。
  • [FromBody]属性用于告诉MVC从请求体中读取数据,和你设置的contentType匹配,无需修改为[FromForm]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:47:18