ここに何かがありません。私はこの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()
に入れると、orderedIds
はウォッチウィンドウでnull
になります。 (ただし、unixTimeMs
には数値があります。)
orderedIds
がコントローラーの_long[]
_になるように、$.ajax()
を介して数値配列を渡すにはどうすればよいですか?
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配列に変換する必要があります。そうしないと、コントローラーに表示されません。
$.param({ orderedIds: orderedIds });
あなたのコードで:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});