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]特性:
对应的AJAX data部分要改成:[Route("GetSectionNavigationItemInfo")] public async Task<JsonResult> GetSectionNavigationItemInfo([FromBody] int selectedNavigationItemID) { var navigationItem = await _navigationHelper.GetSectionNavigationMenuItem(selectedNavigationItemID); return Json(navigationItem); }data: JSON.stringify({ selectedNavigationItemID: 3 }) - 不要滥用dataType:
multipart/form-data是用于文件上传的,普通参数传递不需要设置这个类型。
先修复AJAX的语法错误,基本就能解决参数传递失败的问题。
内容的提问来源于stack exchange,提问作者Matthew Verstraete
相关产品推荐
相关产品推荐

