フォーム内の入力セットをList
MVC 4 にバインドする場合、属性の次の命名規則がinput
name
機能することがわかっています。
<input name="[0].Id" type="text" />
<input name="[1].Id" type="text" />
<input name="[2].Id" type="text" />
しかし、モデルバインダーがどの程度寛容なのか興味があります。たとえば、次の場合はどうでしょうか。
<input name="[0].Id" type="text" />
<input name="[3].Id" type="text" />
<input name="[8].Id" type="text" />
モデル バインダーはこれをどのように処理するでしょうか。List
長さ 9 の に null でバインドしますか。それとも、List
長さ 3 の にバインドしますか。それとも、完全に失敗しますか。
私が気にする理由
ユーザーがフォームに行を追加したり、フォームから行を削除したりできる動的フォームを実装したいと考えています。したがって、ユーザーが合計 8 行のうち 2 行目を削除した場合、後続の入力の番号をすべて再設定する必要があるかどうかを知りたいです。
ベストアンサー1
コレクションで使用するための特定のワイヤ形式があります。これについては、Scott Hanselman のブログで説明されています。
Phil Haack の別のブログ記事でもこのことについて触れています。
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
最後に、まさにあなたが望んでいることを実行するブログエントリがここにあります:
http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/