Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 尝试在asp.net mvc 3应用程序中显示视图时出错?_Linq_Asp.net Mvc 3_C# 4.0 - Fatal编程技术网

Linq 尝试在asp.net mvc 3应用程序中显示视图时出错?

Linq 尝试在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()

我试图在视图中显示列表,如何修复此错误

传递到字典中的模型项的类型为 'System.Data.Objects.ObjectQuery
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>