データベースから動的に作成されたチェックボックスのリストを含むビューを作成し、フォームがポストバックされたときに選択されたもののリストを取得しようとしています。
私のEFモデルにはクラスが含まれています:
public class ItemIWouldLikeACheckboxFor {
public int Id { get; set; }
public string Description { get; set; }
}
これらのリストを含むビューモデルがあります:
public class PageViewModel {
// various other properties
public List<ItemIWouldLikeACheckboxFor> checkboxList { get; set; }
}
私のコントローラーの取得方法:
public ActionResult Create() {
var viewModel = new PageViewModel();
viewModel.checkboxList = db.ItemIWouldLikeACheckboxFors.ToList();
return View(viewModel);
}
私の見解:
<% using (Html.BeginForm()) { %>
<%-- other stuff here... %>
<% foreach (var item in checkboxList) { %>
<%: Html.CheckBox( <!-- what exactly ?????? -->) %>
<% } %>
<%-- other stuff here...%>
<input type="submit" />
<% } %>
私のコントローラー投稿方法:
[HttpPost]
public ActionResult Create(PageViewModel viewModel) {
// do stuff with other fields
// I would like to do something like:
foreach (var item in selectedCheckBoxes) {
// do stuff
}
}
私はそれを機能させることができないようです。私の基本的な質問は、コード スニペットのコメントとして混在していますが、要約すると:
- 私のビューモデルは大丈夫ですか? (単にリストを表示するのではなく、選択したものをキャプチャするために何かを追加する必要がありますか?)
- 各チェック ボックスをレンダリングするには、ビューに正確に何を配置する必要がありますか?
- 投稿後にコントローラーで選択したチェックボックスにアクセスするにはどうすればよいですか?