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

ASP.NET中JS发送Post请求无法传递正确值,请求协助排查

问题原因及解决方法

你的问题出在AJAX请求的数据格式与后端参数解析不匹配,导致后端无法正确映射你发送的数值1,最终取到int类型的默认值0。

核心问题点

  1. 你设置了contentType: "application/json; charset=utf-8",但data直接传入了数值1,此时请求体内容是纯字符串"1",后端的命名参数testNumber无法与这个无键名的数值匹配。
  2. ASP.NET Core默认不会从JSON请求体中自动绑定简单类型(如int)的命名参数,需要显式声明从请求体读取。

解决方案一:按JSON格式规范传递数据(推荐)

修改JavaScript代码

将data改为带键名的JSON字符串,键名需与后端参数名testNumber一致,并用JSON.stringify()转换,同时阻止按钮默认提交行为避免页面刷新:

$(document).ready(function () {
    $("#TestButton").click(function (e) {
        e.preventDefault();
        var valueToSend = 1; 
        $.ajax({
            url: "Home/TestMethod",
            type: "POST",
            dataType: 'json',
            data: JSON.stringify({ testNumber: valueToSend }),
            contentType: "application/json; charset=utf-8",
            success: function (response) {
                alert("Success");
            },
            error: function (xhr, status, error) {
                alert("Failed");
            },
        })
    })
})

修改Controller代码

在参数前添加[FromBody]特性,告诉ASP.NET从请求体中解析JSON数据:

public class HomeController : Controller
{
    public async Task<IActionResult> Index()
    {
        return View();
    }

    [HttpPost]
    public IActionResult TestMethod([FromBody] int testNumber)
    {
        var value = testNumber;
        return View(nameof(Index));
    }
}

解决方案二:改用表单格式传递数据

如果不需要JSON格式,可以移除contentType配置,直接传递键值对,jQuery会自动转换为表单编码格式:

修改JavaScript代码

$(document).ready(function () {
    $("#TestButton").click(function (e) {
        e.preventDefault();
        var valueToSend = 1; 
        $.ajax({
            url: "Home/TestMethod",
            type: "POST",
            dataType: 'json',
            data: { testNumber: valueToSend },
            success: function (response) {
                alert("Success");
            },
            error: function (xhr, status, error) {
                alert("Failed");
            },
        })
    })
})

Controller代码无需修改

保持原有的TestMethod方法即可,ASP.NET会自动从表单数据中绑定testNumber参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:00:40