【发布时间】:2010-08-11 19:30:31
【问题描述】:
我正在尝试将嵌套数组传递给 asp.net mvc 控制器,如下所示:
var subgroups = [];
subgroups [0] = [["A", "Y"],
["B", "Y"],
["C", "Y"]];
subgroups [1] = [["D", "Z"],
["E", "Z"],
["F", "Z"]];
$.ajax({ url: "<%= Url.Content("~/Controller/Action") %>", data: { subgroups: subgroups },
dataType: "json", context: document.body, success: function(data) { ... } );
生成的控制器:
public ContentResult Action(List<string[][]> subgroups) {
...
}
问题是控制器中生成的子组变量如下所示:
subgroups[0][0] == null;
subgroups[0][1] == null;
subgroups[0][2] == null;
subgroups[1][0] == null;
subgroups[1][1] == null;
subgroups[1][2] == null;
深度嵌套数组中的值不会被传递。 Firebug 报告我的 ajax 请求的参数是:
subgroups[0][0][] A
subgroups[0][0][] Y
subgroups[0][1][] B
subgroups[0][1][] Y
subgroups[0][2][] C
subgroups[0][2][] Y
subgroups[1][0][] D
subgroups[1][0][] Z
subgroups[1][1][] E
subgroups[1][1][] Z
subgroups[1][2][] F
subgroups[1][2][] Z
看起来原因是 jQuery 没有填写这些数组索引,因为我可以解决的问题是我将数据格式化为:
subgroups [0] = [{ 0: "A", 1: "Y"}, ...];
为什么 jQuery 为外部数组放置索引,而不是内部数组?请告诉我有比手动指定数字键更好的解决方法吗?
【问题讨论】:
标签: jquery asp.net-mvc arrays