从jQuery向ASP.NET MVC传递数组参数

3

有人对这里发生的事情有任何见解吗?这是我的客户端jquery 1.4.1代码:

$.ajax({
    type: "POST",
    url: "PrintBOL/Print",
    data: [1, 2, 3],
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error: function(xmlHttpRequest, status, errorThrown) {
        console.debug(xmlHttpRequest)
    },
    success: function(serverReply) {
        console.debug("OK")
        console.debug(serverReply)
    }
})

这是我的服务器端方法签名:

public ActionResult Print(int[] ids)

ids参数总是为null。

有任何想法吗?

顺便说一下,我确保在页面顶部调用此代码:

 jQuery.ajaxSettings.traditional = true

更新:请查看Steven答案下的评论以获取解决方法。

2个回答

4
请尝试以下操作:
更改为:
data: [1, 2, 3],

to

data: {"ids": [1, 2, 3]},

打印操作是否具有POST属性[AcceptVerbs(HttpVerbs.Post)]? - Steven Pardo
3
请移除 contentType: "application/json; charset=utf-8" 和 dataType: "json"。在 jQuery 中,JSON 是默认设置。另外,请设置您的 URL 的根路径为 url: "/PrintBOL/Print"。 - Steven Pardo
移除 contentType: "application/json; charset=utf-8",成功了!什么鬼? - George Mauer

2

你需要做的事情:

data: { "ids[0]": 1, "ids[1]": 2, "ids[2]": 3},

“hmm,var ids = [1,2,3]; JSON.stringify(ids)可以用吗?我怎样才能自动获得序列化?” - George Mauer
奇怪,我刚试了一下 - 数据:{"ids [0]": 1,"ids [1]": 2},但它仍然为空。 - George Mauer
尝试将参数更改为 IEnumerable<int> ids -- 这是我的做法。 - Craig Stuntz
当我按照 @Steven 的方式操作时,我的POST是:ids=1&ids=2&ids=3 - 都不起作用。 - George Mauer
在一个空的、新的MVC项目中尝试一下。这应该能起作用。这里可能还有其他问题。 - Craig Stuntz
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接