正确的方式将json数组发送到MVC4控制器动作

时间:2012-12-17 20:09:31

标签: jquery arrays json asp.net-mvc-4 fancybox-2

我有一个控制器:

public virtual ActionResult CreateMultiple(int[] ids)
{
...
}

在JS中,我得到所有选中的复选框,将其转换为int:

数组
var params = [];
$("input:checkbox:checked.checkedPersons").each(function () { params.push($(this).val()); });
$("a.modalFormLink").attr("data-params", JSON.stringify( { "ids": params }));

然后,一旦我点击该链接,我所做的就是显示一个带有视图的Fancybox ...在Fancybox href中发送data-params属性víaqueryString的值:

...
options.params = JSON.parse($(this).attr("data-params"));
var query = $.toQueryString(options.params);
...

问题:嗯,如果我只勾选了一个复选框,这就行了。如果我有多个,则绑定程序失败,参数为null。

data-params属性的内容是:

{"ids":["4","6"]}

当我只有一个值(并且有效)时,内容为:

{"ids":["4"]}

1 个答案:

答案 0 :(得分:3)

我假设您正在使用ajax进行此次调用。

如果是,请尝试添加

traditional: true

在ajax调用中的选项。

$.ajax({
url : 'someurl.com',
traditional:true,
data : someData
});