Я вижу странную (для меня) проблему, когда я пытаюсь опубликовать массив целых чисел на основе флажков. Когда значения не отправляются по порядку, модельное связующее не работает так, как я ожидал бы.Связывание нумерованных массивов в MVC
я могу воспроизвести это на очень простого действие
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 is not broken то, что я делаю неправильно?
Вы не делаете ничего плохого, это то, как работает связующее устройство по умолчанию, когда дело доходит до массивов/списков. В тот момент, когда он не может найти соответствующий индекс + 1, он вызывает его завершение. – rossisdead