チェックボックスに基づいて整数の配列を投稿しようとすると、(私にとって) 奇妙な問題が発生します。値が順番どおりにポストされていないと、モデル バインダーが期待どおりに機能していないように見えます。
非常に単純なアクションに対してこれを再現できます
public ActionResult Debug(string[] Unassigned)
{
return RedirectToAction("Index", new { id = 7 });
}
これが機能しない例としては、次の値がポストされた場合 (即時ウィンドウを介してコピーされた場合) があります。Unassigned の値は 8 と 6 になると思います。
? Request.Form.AllKeys
{string[4]}
[0]: "__RequestVerificationToken"
[1]: "LoginId"
[2]: "Unassigned[1]"
[3]: "Unassigned[3]"
? Request.Form["Unassigned[1]"]
"8"
? Request.Form["Unassigned[3]"]
"6"
? Unassigned
null
値が順番に渡される場合、これは機能します (メモは投稿さ Unassigned[3]
れないためバインドされません。Unassigned[2]
? Request.Form.AllKeys
{string[5]}
[0]: "__RequestVerificationToken"
[1]: "LoginId"
[2]: "Unassigned[0]"
[3]: "Unassigned[1]"
[4]: "Unassigned[3]"
? Request.Form["Unassigned[0]"]
"2"
? Request.Form["Unassigned[1]"]
"8"
? Request.Form["Unassigned[3]"]
"6"
? Unassigned
{string[2]}
[0]: "2"
[1]: "8"
書式設定を除いた、私の HTML は次のようになります
<input type="checkbox" name="Unassigned[0]" value="2">
<input type="checkbox" name="Unassigned[1]" value="8">
<input type="checkbox" name="Unassigned[2]" value="7">
<input type="checkbox" name="Unassigned[3]" value="6">
<input type="checkbox" name="Unassigned[4]" value="5">
<input type="checkbox" name="Unassigned[5]" value="9">
<input type="checkbox" name="Unassigned[6]" value="4">
<input type="checkbox" name="Unassigned[7]" value="3">
<input type="checkbox" name="Unassigned[8]" value="1">
select が壊れていないことを考えると、何が間違っているのでしょうか?