Enviar matriz al controlador MVC a través de JSON?

Estoy intentando, y luchando, enviar una matriz a través de JSON a una acción del controlador MVC.

Esto es lo que tengo y lo que he intentado …

//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); }); 

Cómo lo hago ?

edit: para aquellos que sugieren enviar $checkedRecords “tal cual” desde la línea superior, eso no funciona. Me sale una extraña excepción en algún lugar del framework jquery 🙁

 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] 

lo que creo que significa que está intentando asignar nulo a algo que no puede.

Edición: estoy usando MVC2 no 3

Edit2: Después de la respuesta de @ Monday, el problema se debe a cómo he creado la matriz como [input 4, input 5, input 6] y no [4,5,6] . Cualquier idea de cómo puedo obtener los valores en el matriz en su lugar?

Edit3: dejar de votar duplicar cuando no lo es. ¿Realmente leíste mi problema o leíste los problemas vinculados? Este es un problema diferente

@Daveo:

No quiero incorporar un atributo personalizado de reemplazo solo para enviar una matriz desde JSON, eso es ridículo, ya que hemos cubierto esta pregunta, no es necesario.

MVC3 – irrelevante

Aquí está mi demo, use mvc2, espero que ayude ~

La clave del éxito es tradicional.

establece el parámetro traditional en verdadero

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

Desde jquery 1.4, este parámetro existe porque el mecanismo para serializar objetos en parámetros de consulta ha cambiado.

y la acción es ~

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

También puede usar JSON.stringyfy para enviar los datos como una cadena y luego usar la JavaScriptSerializer class para recuperar los datos.

En el código C #, para obtener los datos, se verá así:

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