我在这里想念东西。我有这个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在我的 Controller 中是long[]

最佳答案

只需将 traditional 参数设置为true:

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

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

07-28 12:08