【发布时间】:2011-10-11 10:42:04
【问题描述】:
我有一个通用类型 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.SelectableViewModel1[Domain.Assignment]]', 但是这本字典需要一个类型的模型项 'Web.Models.SelectableViewModel`1[Domain.Assignment]'。
【问题讨论】:
标签: asp.net-mvc-3 generics editorfor