私はジェネリック型の SelectableViewModel を持っています
public class SelectableViewModel<T> where T : class
{
public SelectableViewModel(T model)
{
Model = model;
}
public T Model { get; set; }
public bool Selected { get; set; }
}
ユーザーがビューからモデルを選択または選択解除できるように、ViewModel をラップします。
コントローラー方式
public ActionResult ListReconsiledAssignments()
{
return View(
assignmentRepository.ListReconsiled()
.Select(a => new SelectableViewModel<Assignment>(a))
);
}
景色
@model IEnumerable<SelectableViewModel<Assignment>>
@{
ViewBag.Title = "Request snapshot";
}
<h2>Request snapshot</h2>
<table>
<thead>
<tr>
<th></th>
<th>Number</th>
<th>Name</th>
</tr>
</thead>
@Html.EditorFor(m => m, "SelectableAssignment")
</table>
SelectableAssignment.cshtml という名前のテンプレートのエディター
@model SelectableViewModel<Assignment>
<tr>
<td>@Html.CheckBoxFor(m => m.Selected)</td>
<td>@Model.Model.KufId</td>
<td>@Model.Model.Name</td>
</tr>
これは例外をスローします
ディクショナリに渡されたモデル アイテムのタイプは 'System.Linq.Enumerable+WhereSelectListIterator
2[Domain.Assignment,Web.Models.SelectableViewModel
1[Domain.Assignment]]' ですが、このディクショナリにはタイプ 'Web.Models.SelectableViewModel`1[Domain.Assignment]' のモデル アイテムが必要です。 .