我正在尝试在视图中显示列表,如何解决此错误?
传递到字典中的模型项是类型的 'System.Data.Objects.ObjectQuery
1[System.Linq.IGrouping
2 [System.Int32,mvc3Post.Models.Contact]]', 但是这个字典需要一个类型的模型项 'System.Collections.Generic.IEnumerable`1 [mvc3Post.Models.Contact]'。
控制器:
public ActionResult Index()
{
AdventureWorksEntities db = new AdventureWorksEntities();
var result = from soh in db.SalesOrderHeaders
join co in db.Contacts
on soh.ContactID equals co.ContactID
orderby co.FirstName
group co by co.ContactID into g
select g;
return View(result.AsEnumerable());
}
视图:
@model IEnumerable<mvc3Post.Models.Contact>
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
NameStyle
</th>
<th>
Title
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.NameStyle)
</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ContactID }) |
@Html.ActionLink("Details", "Details", new { id = item.ContactID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ContactID })
</td>
</tr>
}
</table>
答案 0 :(得分:0)
现在更新我看到了控制器方法:
您可能需要将LINQ结果集转换为列表或其他内容(例如,contacts.ToList()
)更具体。
另一种选择可能是为页面的列表对象创建一个根对象。如果每个View都有一个代表它整个状态的相应Model类,我发现它更容易理解和维护。
我认为这两种路线都可以解决您的问题。我认为后者可能是更好的方式,如果我不得不推荐一个与另一个。