2009-07-02 9 views
5

Po kilku miesiącach pracy w MVC wróciłem do wcześniej napisanej aplikacji WebForms 3.5 i próbuję naprawić to, co mogę, dzięki temu, czego się nauczyłem.Obsługa Linq Lamba w WebForms ASCX

Częściowo jest to koncepcja "mocno napisanego modelu z częściowym widokiem", która jest niesamowicie niesamowita. Przez dziedziczenie mój własny „ListTemplate” kontrolę, mogę potem wykorzystać swoje metody GetModel(), aby dostać coś przypominającego to:

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

mogę następnie uruchomić foreach nad modelem i wszyscy są szczęśliwi. Jednak chciałem zrobić zgrupowanie więc dodałem odniesień do:

Potem, z nieco mniej niż idealnej składni, próbowałem:

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

Ale nie! "Komunikat o błędzie kompilatora: CS1525: Nieprawidłowy termin wyrażeń"> "" i wygląda na to, że jest to błąd lambda. Nie działa, jeśli ustawię GroupBy() w parametrach foreach.

Czy istnieje sposób na uzyskanie lambdas pracy w plikach ASCX?

Odpowiedz

5

Na podstawie komunikatu o błędzie, moim pierwszym instynktem byłoby stwierdzenie, że używasz kompilatora C# 2.0.

Nie jestem pewien, jaki jest typ zwrotu GetModel<T>. Ale nawet jeśli jest to pusta metoda, rzeczywiste wyrażenie lambda jest prawidłową konstrukcją składniową. Powinien wygenerować błąd rozdzielczości, a nie błąd parsowania.

Jednak tak nie jest w kompilatorze C# 2.0. Byłby to nieprawidłowy konstrukt składniowy i wygenerowałby ten komunikat o błędzie.

Czy możesz sprawdzić, czy używasz poprawnej wersji kompilatora C#?

+0

Ah, mówi: Informacje o wersji: Microsoft .NET Framework Wersja: 2.0.50727.3053; Wersja ASP.NET: 2.0.50727.3053. Jak mogę określić v3.5 i dlaczego pliki ASCX będą przetwarzane inaczej niż reszta mojej witryny (która jest zdecydowanie v3.5, ponieważ ustawiona jako struktura docelowa w panelu właściwości projektu WWW)? – tags2k

+0

Na marginesie, typem zwrotu GetModel jest lista tags2k

+1

Posortowano ją teraz - to dziwne. Skonfiguruj nowy projekt 3.5, aby porównać pliki web.config iz jakiegoś powodu sekcja system.costedom> compilers była pusta w moim drugim projekcie! Zastanawiam się, jak długo tak było! – tags2k

Powiązane problemy