jQuery AJAX POST不向控制器传递值Net Core MVC



我已经找了几个小时了,什么也没找到。很多类似的问题都是关于发布到控制器,但我只是想发布一个整数。我已经确认代码正在调用控制器,因为我可以在控制器中击中一个断点,并看到我硬编码的值没有传递给控制器。我确信我错过了一些愚蠢的东西,但在尝试了很多不同的东西之后,我无法弄清楚控制器总是得到值"0"。为selectedNavigationItemID。在将整数传递到控制器时,我遗漏了什么?

分隔出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("GetSectionNavigationItemInfo")]
public async Task<JsonResult> GetSectionNavigationItemInfo(int selectedNavigationItemID)
{
var navigationItem = await _navigationHelper.GetSectionNavigationMenuItem(selectedNavigationItemID);
return Json(navigationItem);
}

我尝试删除data中信息周围的问题,指定application/jsoncontentType,将dataType更改为multipart/form-data,但这一切都导致0的值被传递到控制器。

我错过了什么愚蠢的小事情使这个工作?

如果你看一下浏览器的网络选项卡,它可能是用GET方法发送的,因为你的ajax语法不正确,Ajax配置没有应用,默认情况下它是用GET方法发送的,试着改变你的代码:

$(document).ready(function()
{
$('#SelectedExistingNavigationItemID').change(function() {
$.ajax({
url: '../Sections/GetSectionNavigationItemInfo/',
type: 'POST',
dataType: 'json',
data: { 'selectedNavigationItemID': '3' },
success: function(data, status, jqXHR) {
if ("success" == status) {
alert('good');
}
}
});
});
});

改进代码的技巧:

最好将[HttpPost]属性添加到您的操作中,以便您的操作仅通过POST方法可用。这样,您的操作方法将不再被GET方法调用,并且您可以更容易地调试代码并找到问题。

[HttpPost]
[Route("GetSectionNavigationItemInfo")]
public async Task<JsonResult> GetSectionNavigationItemInfo(int selectedNavigationItemID)
{
var navigationItem = await _navigationHelper.GetSectionNavigationMenuItem(selectedNavigationItemID);
return Json(navigationItem);
}

最新更新