체크 박스를 기반으로 정수 배열을 게시하려고 시도하는 곳에서 이상한 (나에게) 문제가 발생합니다. 값이 순서대로 게시되지 않으면 모델 바인더가 예상대로 작동하지 않는 것 같습니다.MVC에서 번호가 매겨진 배열 배열
나는 매우 간단한 작업에 대해이 문제를 재현 할 수
public ActionResult Debug(string[] Unassigned)
{
return RedirectToAction("Index", new { id = 7 });
}
이 예제하지 다음 값이 게시 (직접 실행 창을 통해에 복사) 할 때이 될 것입니다 작업. 값이 순서대로 전달되면 나는이 (Unassigned[3]
가 게시되지 Unassigned[2]
으로 구속되지 않습니다 작동 값 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
을 가지고 할당되지 않은 기대.
? 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이 무엇을 잘못하고 있어요 select is not broken 감안할 때이
<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">
처럼 보인다?
을, 배열 /리스트와 관련하여 기본 모델 바인더가 작동하는 방식 일뿐입니다. 일치하는 색인 + 1을 찾을 수없는 순간에 종료됩니다. – rossisdead