У меня есть универсальный тип 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].