通过JSON将数组发送到MVC控制器?

我正在努力,通过JSON将数组发送到MVC控制器动作。

这是我拥有的和我尝试过的……

//Get checked records var $checkedRecords = $(':checked'); //eg 3 rows selected = [input 4, input 5, input 6] //Have tried following: sendingVar: $checkedRecords.serializeArray(); // gives array of 0's sendingVar: JSON.stringify($checkedRecords); // gives "{\"length\":1,\"prevObject\":{\"0\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"length\":1},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"selector\":\":checked\",\"0\":{}}"...wtf //Post $.post(url, { sendingVar: sendingVar }, function(data) {alert(data); }); 

我该怎么做 ?

编辑:那些建议从顶线“按$checkedRecords ”发送$checkedRecords – 这是行不通的。 我在jquery框架中的某个地方得到一个奇怪的exception:(

 uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://.../.../.../jquery-1.4.4.min.js ::  :: line 141" data: no] 

我认为这意味着它试图将null分配给它不能的东西。

编辑:我使用MVC2而不是3

Edit2:在@ Monday的答案之后 – 问题是由于我如何构建数组,如 [input 4, input 5, input 6]而不是[4,5,6] – 任何想法我如何才能获得值数组呢?

编辑3:当没有复制时停止投票。 你真的读过我的问题或阅读链接的问题了吗? 这是一个不同的问题

@Daveo:

我不希望构建一个重写的自定义属性只是为了从JSON发送一个数组,这是我们已经在这个问题中已经涵盖的一点点 – 这是没有必要的。

MVC3 – 无关紧要

这是我的演示,使用mvc2,希望有些帮助〜

成功的关键是传统

traditional参数设置为true

 $(function(){ var a = [1, 2]; $.ajax({ type: "POST", url: "<%= ResolveUrl("~/Home/PostArray/") %>", data: {orderedIds: a}, dataType: "json", traditional: true, success: function(msg){alert(msg)} }); }) 

从jquery 1.4开始,此参数存在,因为将对象序列化为查询参数的机制已更改。

并且行动是〜

 [HttpPost] public ActionResult PostArray(int[] orderedIds) { return Content(orderedIds.Length.ToString()); } 

您还可以使用JSON.stringyfy将数据作为字符串发送,然后使用JavaScriptSerializer class来检索数据。

在C#代码中,要获取数据,将如下所示:

 JavaScriptSerializer js = new JavaScriptSerializer(); js.Deserialize(string paramiter);