2011-03-26 2 views
2

나는 다음과 같은 코드를 가지고 : 나는 다음과 같은 오류 얻을ASP.Net MVC을 ViewData 문제

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] 형식의 모델 항목이 필요합니다.

나는 여기에서 무슨 일이 일어나고 있는지, 어떻게 고쳐야하는지 잘 모르겠다. 고마워.

답변

1

보기가 List<Item> 일 때 LINQ에서 List<EntityCollection<Item>>과 같은 목록을 만듭니다.

나는 아주 잘 LINQ에 대한 쿼리 구문을 모르는, 그러나 이것은 당신이 함수 구문으로 원하는 것을 얻을 것입니다 방법은 다음과 같습니다 각 고객에 따라

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

걸릴 것입니다 많은 Items하고 평평 Items의 목록으로 다음과

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

:

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

내가 아주 잘 함수 구문을 이해하지 못하는 –

+0

Aha, 나는 그것을 알아 냈다, 나의 두뇌는 느려지고 있었다. :) 매우 고맙다, 이것은 일했다! 감사합니다. –

+0

페이지 상단에'using System.Linq; '가 있는지 확인하십시오. –

0

이 라인을 교체합니다. 위와 같이 쓴 것을 입력하려고 시도했지만, (c => c.Type .... 등의 경우에는 인식 할 수 없습니다. 사용 가능하도록 설정해야합니까? 감사합니다.
+0

그러면 '유형'목록이 나에게 반환되며 항목 목록이 필요합니다. 다음 오류가 나타납니다. ---------- 사전에 전달 된 모델 항목의 형식은 'System.Collections.Generic.List'1 [Project_Name.Models.Type]'이지만이 사전 'System.Collections.Generic.List'1 [Project_Name.Models.Item]'형식의 모델 항목이 필요합니다. –