Phil Haackが投稿したコードを使用して、2つ以上のコレクションを結んでいる人は誰ですか?Model Binding To A List?2つ以上のコレクションを束縛するモデル
例として、以下のコードがあります。
public class Book {
public string Name { get; set; }
}
public class Author {
public string Name { get; set; }
}
public ActionResult Index(List<Book> books, List<Author> authors) {
// Will never model bind two collections.
}
私が持っているHTMLは次のとおりです。
<input type="hidden" name="books.index" value="1" />
<input type="text" name="books[1].Name" />
<input type="hidden" name="books.index" value="2" />
<input type="text" name="books[2].Name" />
<input type="hidden" name="authors.index" value="1" />
<input type="text" name="authors[1].Name" />
<input type="hidden" name="authors.index" value="1" />
<input type="text" name="authors[1].Name" />
私が手に例外がある:
パラメータ辞書は、パラメータ「本手法のための「システムの無効なエントリが含まれています.Web.Mvc.ActionResult Index(System.Collections.Generic.List
1[Book], System.Collections.Generic.List
1 [著者]) '' HomeController '。辞書には、 'System.Collections.Generic.List'タイプの値が含まれています。1[Book]', but the parameter requires a value of type 'System.Collections.Generic.List
1 [著者] '。パラメータ名:パラメータ
私は間違ったことをしていますか、これはASP.NET MVCではサポートされていませんか?
リストを使用しているので、インデックス値を格納するために非表示フィールドは必要ありません。また、インデックスは0から開始する必要があります。 –
ブログによると、新しいアイテムを削除または動的に追加する場合は、インデックス値を格納するために非表示フィールドを使用する必要があります。私のビューはアイテムを削除できるので、私は隠しフィールドが必要です。 –
アクションメソッドから1つのパラメータを削除すると、もう1つは問題なくバインドされます。たとえば、アクションメソッドからauthorsパラメータを削除した場合、booksパラメータは正しくバインドされます。 –