2009-07-02 2 views
5

MVC에서 몇 달간 일한 후 이전에 작성한 WebForms 3.5 응용 프로그램으로 돌아가서 배웠던 것을 수정하려고합니다.WebForms ASCX에서 Linq Lamba 지원

"부분보기가있는 강력한 형식의 모델"이라는 개념이 매우 훌륭합니다. 내 사용자 지정 "ListTemplate"컨트롤을 상속, 나는 다음이를 닮은 무언가를 얻기 위해 자신을 getModel() 메소드를 사용할 수 있습니다

<% List<Models.CaseStudy> model = GetModel<Models.CaseStudy>(); %> 

나는 그 모델을 통해 foreach 문을 실행할 수 있으며, 모두가 행복하다. 약간보다 적게보다는 이상적인 구문,

그런 다음이 시도 : 그러나, 나는에 대한 참조를 추가하도록 그룹화를하고 싶었다

<% IEnumerable<IGrouping<string, Models.CaseStudy>> model = GetModel<Models.CaseStudy>().GroupBy(e => e.Client.Name); %> 

을하지만! "컴파일러 오류 메시지 : CS1525 : 유효하지 않은 표현식 용어 '>'"- 오류시 람다로 나타납니다. foreach 매개 변수 중 하나에 GroupBy()를 넣으면 작동하지 않습니다.

람다를 ASCX 파일 내에서 작동시키는 방법이 있습니까?

답변

5

오류 메시지를 기반으로, 내 첫 번째 본능은 C# 2.0 컴파일러를 사용하고 있다고 말할 수 있습니다.

GetModel<T>의 반환 유형이 확실하지 않습니다. 그러나 이것이 빈 메소드 일지라도, 실제 람다 표현식은 유효한 구문 구조입니다. 파싱 ​​오류가 아닌 과부하 해결 오류가 발생합니다.

그러나 C# 2.0 컴파일러에서는 그렇지 않습니다. 유효하지 않은 구문 구조이므로 해당 오류 메시지가 생성됩니다.

올바른 버전의 C# 컴파일러를 사용하고 있는지 확인할 수 있습니까?

+0

아, 이렇게 말합니다. 버전 정보 : Microsoft .NET Framework 버전 : 2.0.50727.3053; ASP.NET 버전 : 2.0.50727.3053. v3.5를 어떻게 지정할 수 있습니까? 왜 ASCX 파일이 다른 사이트와 다른 방식으로 처리됩니까? (웹 프로젝트 속성 창에서 대상 프레임 워크로 설정 한 v3.5) – tags2k

+0

제쳐두고, GetModel 의 반환 유형은 List tags2k

+1

입니다. 이제 정렬되었습니다. 이상합니다. web.config 파일을 비교하기 위해 새 3.5 프로젝트를 설정하고 어떤 이유로 system.codedom> 컴파일러 섹션이 다른 프로젝트에서 비어 있습니다! 얼마나 오래되었는지 궁금해! – tags2k