2010-06-10 3 views
2

이 코드는 오류 '형식을 IEnumerable의 모델이 필요합니다'를에이 결과로이L2E/S로 항목을 선택하는 방법은 무엇입니까?

var errors = (from error in db.ELMAH_Error 
     select new 
     { 
      error.Application, 
      error.Host, 
      error.Type, 
      error.Source, 
      error.Message, 
      error.User, 
      error.StatusCode, 
      error.TimeUtc 
     }).ToList(); 

return View(errors); 

을 더 이동 중입니다. 그래서 아마 난 그냥 아니에요, 나는 MVC2 + L2E 새로운 브랜드 때리기이야

var errors = (from error in db.ELMAH_Error 
     select error).ToList(); 

return View(errors); 

: 물론 다음 코드는 몇 가지가있는 나는 단지에 관심이 아니에요, 잘 작동하지만 모든 열을 선택 올바른 사고 방식으로 사고하고 있지만, 직관적이지는 않습니다. 제한된 수의 열을 선택할 수있는 쉬운 방법이 있습니까? 아니면 ORM을 사용하는 것입니까?

답변

1

이것은 L2E/L2S에서는 문제가 아니지만 강력한 형식의 MVC로 인해 발생합니다.

저는 "IEnumerable"모델이 아니라 "IEnumerable<Something>"모델이 필요합니다. 강력한 형식의보기가 오류 테이블의 형식에 바인딩 된 경우 쿼리에서 만든 익명 형식 (select new {...} 통해)을 전달하려고하면 형식이 일치하지 않게됩니다.

원하는 행만 포함하는 새 형식을 만들어보기 페이지 모델로 사용하거나 전체 선택을 수행 한 다음 ASP 코드에서 열을 제한 할 수 있습니다.

+0

사실 강하게 유형화 된보기입니다. 자습서를 읽고 잊어 버렸기 때문에 설명합니다. 올바르게 이해하면 내 견해에 대한 새로운 강력한 유형을 만듭니다 (모델에서 표준 .cs 파일로 이동합니까?), IEnumberable 을 참조하는 대신 뷰를 IEnumerable 으로 가리키면 바인딩됩니다. 보기의 모델? – orlon

+0

네, 꽤 많이 있습니다. 그런 다음 쿼리를'select new {...} '에서'select MyNewType (...)'로 변경하면 당신은 황금색이됩니다. – tzaman

관련 문제