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

时间:2018-11-15 13:17:40

标签: jquery asp.net-mvc asp.net-ajax

我尝试了很多stackoverflow帖子,但是我总是得到相同的结果。 传递的int数组始终为null。

Pass array to mvc Action via AJAX

这是接受id的int数组的asp.net mvc操作。

[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数组。似乎traditional对象的ajax参数没有任何作用。

2 个答案:

答案 0 :(得分:0)

只需删除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);

答案 1 :(得分:0)

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

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