MVC 4 リスト モデル バインディングはどのように機能しますか? 質問する

MVC 4 リスト モデル バインディングはどのように機能しますか? 質問する

フォーム内の入力セットをListMVC 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 のブログで説明されています。

http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx

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/

おすすめ記事