【问题标题】:Correct way to send json array to MVC4 controller action将 json 数组发送到 MVC4 控制器操作的正确方法
【发布时间】:2012-12-17 20:09:31
【问题描述】:

我有一个控制器:

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 中的 queryString 发送 data-params 属性的值:

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

问题:好吧,如果我只选中了一个复选框,这在某种程度上是可行的。如果我有多个,则 binder 失败并且参数为 null。

data-params 属性的内容是:

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

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

{"ids":["4"]}

【问题讨论】:

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


    【解决方案1】:

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

    如果是这样,请尝试添加

    traditional: true
    

    到您在 ajax 调用中的选项。

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

    【讨论】:

    • 问题与我将参数传递给 ajax 的方式更相关......我们使用的是查询字符串而不是数据参数。 QueryString 适用于单个值...但不适用于数组。谢谢!
    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2015-03-10
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多