首页 > 解决方案 > 如何使用传统处理从 jquery ajax 发送的数组:false

问题描述

我在将数组从 jquery ajax 传递到 MVC .Net 控制器时获得了一些乐趣。

我需要提供几个参数 - 这是控制器方法的签名:

public PartialViewResult GetMyPartial(Dictionary<int, string> param1, IEnumerable<int> param2) 

由于某种原因,我无法将 param2 传递给服务器。在 JS 的客户端上,我以以下方式构建集合:

var param1 = {};
$.each(someIntArray, function (index, value) {
    param1[value] = 'test' + index;
});

var param2 = [];
$('.someCheckbox[aria-expanded|=true]').each(function () {
    param2.push(parseInt($(this).val()));
});

我通过以下方式发送它们:

$.ajax({
...
    //traditional: true,
    data: {
        param1: param1,
        param2: param2
    },
...
});

这成功通过了 param1,但没有通过 param2。如果我取消注释traditional: true然后 param2 成功传递,但不是 param1。

有没有办法在单个参数上使用传统模式?或者某种让控制器满意的方法?param2[]=1&param2[]=2。此刻它似乎只是喜欢?param2=1&param2=2

我怀疑这可能取决于我如何构建集合,这就是我包含该代码的原因。

任何帮助都会很棒 - 在此先感谢。

标签: javascriptc#jqueryasp.net-mvc

解决方案


如果您愿意发送 JSON,您可以这样做

    data: JSON.stringify({
        param1: param1,
        param2: param2
    }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",

推荐阅读