如何将 int 数组从 jquery ajax 传递到 asp.net mvc 操作

How pass int array from jquery ajax to asp.net mvc action

我尝试了很多 Whosebug 帖子,但结果总是一样。 传递的 int 数组始终为空。

Pass array to mvc Action via AJAX

这里是 asp.net mvc 动作,它接受 id 的 int 数组。

[HttpPost]
public ActionResult Downloads(int[] ids){
    return RedirectToAction("Exports", ids);
}

这是 ajax 调用,发送值。

var url = '@Url.Action("Downloads")';
var values = [1,2,3];
$.ajax({
    url: url,
    type: 'POST',
    dataType: "json",
    contentType: 'application/json; charset=utf-8',
    traditional: true,
    data: JSON.stringify({ids: values })
});

我不知道我做错了什么。 我已经像简单数组一样传递了 ajax 的日期:data: values 或没有 stringify,但是 asp.net mvc 从不接受 int 数组。 ajax 对象的 traditional 参数似乎没有做任何事情。

只需删除 JSON.stringify 即可。

[HttpPost]
public JsonResult Test(int[] ids)
{
   return Json("Integers. " + ids);
}

//在Jquery中请放这个。

var PostData = {};
PostData.ids = [1, 2, 3, 5];
var ajaxOptions = {
        type: "POST",
        url: '@Url.Action("Test", "Settings")',//Actionname, ControllerName
        data: PostData,
        dataType: "json",
        success: function (result) {
            console.log(result);
        },
        error: function (result) {

        }
};
$.ajax(ajaxOptions);

如果您想使用传统编码发送值,那么您不应该JSON 对您发送的数据进行编码。因此,删除 JSON.strigify() 调用以及 contentType。试试这个:

$.ajax({
  url: url,
  type: 'POST',
  dataType: "json",
  traditional: true,
  data: { ids: values }
});