ASP.Net MVC ViewData问题

时间:2011-03-26 13:16:34

标签: linq asp.net-mvc-3

我有以下代码:

private Models.mediamanagerEntities dataModel = new Models.mediamanagerEntities();

public ActionResult Index(FormCollection form)
{
    ViewData.Model = (from m in dataModel.Customers select m.Type.Items).ToList();
    return View();
}



View:

%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<Project_Name.Models.Item>>" %>

<% foreach (var m in ViewData.Model)
   { %>

    Title: <%= m.Title %>
    <% } %>

我收到以下错误:

传递到字典中的模型项的类型为'System.Collections.Generic.List 1[System.Data.Objects.DataClasses.EntityCollection 1 [Project_Name.Models.Item]]',但此字典需要类型为'System.Collections的模型项.Generic.List`1 [Project_Name.Models.Item]。

我不太确定这里发生了什么,或者如何纠正它,谢谢。

2 个答案:

答案 0 :(得分:1)

当您的视图需要List<EntityCollection<Item>>时,您的LINQ正在创建类似此List<Item>的列表。

我不太了解LINQ的查询语法,但这就是你用函数语法得到你想要的东西:

ViewData.Model = dataModel.Customers.SelectMany(c => c.Type.Items).ToList();

这会占用每位客户下的许多Items,并将其展平为一个Items列表。

答案 1 :(得分:0)

替换此行:

ViewData.Model = (from m in dataModel.Customers select m.Type.Items).ToList();

以下内容:

 ViewData.Model = dataModel.Type.ToList();