jQuery Ajax将数组发送到ASP.NET MVC控制器

我在这里错过了一些东西。 我有这个jQuery JavaScript:

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

其中orderedIds是一个JavaScript数组数组(例如var orderedIds = [1, 2] )。

处理Controller方法是:

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

当我把一个Debugger.Break()放在UpdateNoteOrder() ,在Watch窗口中orderedIdsnull 。 (但是, unixTimeMs有一个数字值。)

如何通过$.ajax()传递数组数组, orderedIds在我的控制器中orderedIds是一个long[]

只需将traditional参数设置为true

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

由于jquery 1.4存在此参数,因为序列化对象到查询参数的机制已经改变。

你需要把orderedId变成一个参数数组,否则控制器将不会看到它

 $.param({ orderedIds: orderedIds }); 

在你的代码中:

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