jQuery Ajax POSTing array para el controlador ASP.NET MVC

Me falta algo aquí. Tengo este jQuery JavaScript:

$.ajax({ type: "POST", url: "/update-note-order", dataType: "json", data: { orderedIds: orderedIds, unixTimeMs: new Date().getTime() } }); 

Where orderedIds es una matriz de números de JavaScript (por ejemplo, var orderedIds = [1, 2] ).

El método del Controller manejo es:

 [HttpPost] public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs) { ... } 

Cuando coloco un Debugger.Break() en UpdateNoteOrder() , orderedIds es null en la ventana orderedIds . ( unixTimeMs , sin embargo, tiene un valor numérico).

¿Cómo paso la matriz numérica a través de $.ajax() tal que orderedIds es un long[] en mi controlador?

Simplemente establece el parámetro traditional en true :

 $.ajax({ type: "POST", url: "/update-note-order", dataType: "json", traditional: true, data: { orderedIds: orderedIds, unixTimeMs: new Date().getTime() } }); 

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

Tendrás que convertir orderedId’s en una matriz param, o el controlador no lo verá

 $.param({ orderedIds: orderedIds }); 

en tu código:

 $.ajax({ type: "POST", url: "/update-note-order", dataType: "json", data: { orderedIds: $.param({ orderedIds: orderedIds }), unixTimeMs: new Date().getTime() } });