私のViewModelには、いくつかのオブジェクト(IEnumerable)のコレクションが含まれています。コレクションのアイテムは、タグの行に表示されます。フォームを送信すると、それ自体を検証するために送信jQuery関数がトリガーされます。その表示されたテーブルから値を取得し、オブジェクトに変換する必要があります。
これをチェックしてください:
//
// the table to display my collection content
<div id="publications">
Items to publish:
<table>
<thead><tr>
<td></td>
<td>Item</td>
</tr></thead>
<tbody>
@{
for (int counter = 0; counter < Model.Publications.Count; ++counter)
{
<tr>
<td>
@Html.HiddenFor(m => Model.Publications[counter].ID)
@Html.CheckBoxFor(m => Model.Publications[counter].Selected)
</td>
<td>
@Html.HiddenFor(m => Model.Publications[counter].ItemID)
@Html.DisplayTextFor(m => Model.Publications[counter].ItemDescription)
</td>
</tr>
}
}
</tbody>
</table>
</div>
//
// The Publication ViewModel
public class PublicationViewModel {
public string ID { get; set; }
public bool Selected { get; set; }
public string ItemID { get; set; }
public string ItemDescription { get; set; }
}
//
// The main ViewModel
public class MainViewModel {
public string ID { get; set; }
public string Name { get; set; }
public IEnumerable<PublicationViewModel> Publications { get; set; }
}
問題は、そのテーブルをjQueryを使用してシリアル化されたオブジェクトに変換する方法です。どうもありがとうございました!