如何通过ajax将集合/数组发送到mvc动作

时间:2010-12-21 13:33:03

标签: jquery asp.net-mvc ajax

atm我正在尝试这样,但没有运气,我在我的行动中得到了空白

var arr = [31,17,16];

$.get('<%=Url.Action("Do", "Foo") %>', 
       {ids:arr},
       function(d){...});

public ActionResult Do(IEnumerable<int> ids)
{
...
}

2 个答案:

答案 0 :(得分:6)

试试这样:

$.ajax({
    url: '<%= Url.Action("Do", "Foo") %>',
    data: { ids: [ 31, 17, 16] },
    traditional: true,
    success: function(result) {

    }
});

注意traditional: true参数。

或者如果你坚持使用$.get()功能:

$.get(
    '<%= Url.Action("Do", "Foo") %>', 
    $.param({ ids: [31, 17, 16] }, true), 
    function (result) {

    }
);

答案 1 :(得分:2)

我只是偶然发现了这个问题,但却找到了另一种解决方案。我比traditional更喜欢这个,所以我会在这里发布,以便其他人可以自己选择。

$.ajax(url, 
    {
        type: method,                    //"GET", or "POST", etc. The REST verb
        data: JSON.stringify(myData),    //stringify your collection or complex object
        contentType:"application/json",  //tell the controller what to expect
        complete: callback
    });
});

这适用于我发送的每种数据类型,无论多么复杂。我们实际上将它包装在一个名为RequestService的类中,它为从客户端脚本到MVC API控制器的所有请求执行此操作。提供此对象还有很多其他不错的属性,例如timeoutheaders。查看完整的文档here

我正在运行.NET Framework 4.5和JQuery 1.7.1,但我相信这个版本的$.ajax是从1.5开始