Linq 尝试在asp.net mvc 3应用程序中显示视图时出错?
我试图在视图中显示列表,如何修复此错误 传递到字典中的模型项的类型为 'System.Data.Objects.ObjectQueryLinq 尝试在asp.net mvc 3应用程序中显示视图时出错?,linq,asp.net-mvc-3,c#-4.0,Linq,Asp.net Mvc 3,C# 4.0,我试图在视图中显示列表,如何修复此错误 传递到字典中的模型项的类型为 'System.Data.Objects.ObjectQuery1[System.Linq.iGroup2[System.Int32,mvc3Post.Models.Contact]', 但此词典需要类型为的模型项 'System.Collections.Generic.IEnumerable'1[mvc3Post.Models.Contact]' 控制器: public ActionResult Index()
1[System.Linq.iGroup
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
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
名称样式
标题
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.NameStyle)
@DisplayFor(modeleItem=>item.Title)
@ActionLink(“编辑”,“编辑”,新的{id=item.ContactID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.ContactID})|
@ActionLink(“删除”,“删除”,新建{id=item.ContactID})
}
现在我看到控制器方法后更新:
您可能需要将LINQ结果集转换为列表或更具体的内容(例如,contacts.ToList()
)
另一种选择可能是为页面的列表对象创建一个根对象。我发现,如果每个视图都有一个表示其整个状态的对应模型类,那么就更容易理解和维护
我认为这两种方法都能解决你的问题。我认为,如果我不得不推荐一种方法而不是另一种方法,那么后者可能是更好的方法。控制器方法见上文:)
@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>