JavaScript から int 配列と int の 2 つのパラメーターを受け入れる MVC コントローラーに int の配列を渡そうとしています。これは、コントローラー アクションによって返されたビューへのページ リダイレクトを実行するためです。
var dataArray = getAllIds(); //passes back a JavaScript array
window.location.replace("/" + controllerName + "/EditAll?ids=" + dataArray + "¤tID=" + dataArray[0])
サンプルの使用法では、dataArray には 1,7 が含まれています。
コントローラーコード
public virtual ActionResult EditAll(int[] ids, int currentID)
{
currentModel = GetID(currentID);
currentVM = Activator.CreateInstance<ViewModel>();
currentVM.DB = DB;
currentVM.Model = currentModel;
currentVM.ViewMode = ViewMode.EditAll;
currentVM.ModelIDs = ids;
if (currentModel == null)
{
return HttpNotFound();
}
return View("Edit", MasterName, currentVM);
}
問題は、コントローラーに渡された int[] ID を調べると、その値が null になることです。currentID は期待どおり 1 に設定されます。
jQuery.ajaxSettings.traditional = true を設定しようとしましたが、効果はありません。また、JavaScript で @Url.Action を使用してサーバー側の URL を作成しようとしました。配列を渡す前に JSON.Stringify も試しました。
window.location.replace("/" + controllerName + "/EditAll?ids=" + JSON.stringify(dataArray) + "¤tID=" + dataArray[0])
ここでも、id 配列はコントローラー側で null になります。
int 配列をコントローラーに正しく渡すためのポインターはありますか? コントローラー アクションでパラメーターを String として宣言し、パラメーターを手動でシリアル化および逆シリアル化することもできますが、単純な型変換を自動的に行うようにフレームワークを取得する方法を理解する必要があります。
ありがとう!