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

ASP.Net Core MVC中jQuery AJAX POST无法传递整数值到控制器

问题解决:AJAX传递整数到ASP.NET控制器始终为0的问题

首先看你AJAX代码里的致命语法错误:
你在$.ajax('../Sections/GetSectionNavigationItemInfo/')后面多了一个逗号,这导致后面的配置对象根本没被传入$.ajax方法,相当于你只发起了一个不带任何参数的POST请求,所以控制器收到的是int类型的默认值0。

修正后的AJAX代码

$(document).ready(function()
{
    $('#SelectedExistingNavigationItemID').change(function()
    { 
        $.ajax('../Sections/GetSectionNavigationItemInfo/',
        {
            type: 'POST',
            dataType: 'json',
            data: { selectedNavigationItemID: 3 }, // 直接传数字更规范,不需要引号
            success: function(data, status, jqXHR)
            {
                if ("success" == status)
                {
                    alert('good');
                }
            }
        });
    });
});

额外注意事项

  • 路由匹配验证:如果你的控制器类上有[Route("Sections")]前缀特性,当前请求路径../Sections/GetSectionNavigationItemInfo/是正确的;如果控制器没有路由前缀,需要调整路径为../GetSectionNavigationItemInfo/。
  • JSON格式传值的情况:如果想要用contentType: "application/json",需要把data转成JSON字符串,同时控制器参数要加[FromBody]特性:
    [Route("GetSectionNavigationItemInfo")]
    public async Task<JsonResult> GetSectionNavigationItemInfo([FromBody] int selectedNavigationItemID)
    {
        var navigationItem = await _navigationHelper.GetSectionNavigationMenuItem(selectedNavigationItemID);
        return Json(navigationItem);
    }
    
    对应的AJAX data部分要改成:data: JSON.stringify({ selectedNavigationItemID: 3 })
  • 不要滥用dataType:multipart/form-data是用于文件上传的,普通参数传递不需要设置这个类型。

先修复AJAX的语法错误,基本就能解决参数传递失败的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:30:49