2009-07-02 11 views
5

Nachdem ich einige Monate in MVC gearbeitet habe, bin ich zurück in einer zuvor geschriebenen WebForms 3.5-Anwendung und versuche, das, was ich gelernt habe, wieder herzustellen.Linq Lamba-Unterstützung in WebForms ASCX

Teil davon ist das "stark typisierte Modell mit einer Teilansicht" -Konzept, das unglaublich genial ist. Durch vererben Kontrolle meiner Gewohnheit „Listtemplate“, kann ich dann seine Verwendung getModel() -Methode so etwas wie diese zu erhalten:

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

dann kann ich ein foreach über Modell laufen, und alle sind glücklich. Allerdings wollte ich eine Gruppierung tun, damit ich Verweise auf hinzugefügt:

Dann, mit einem etwas weniger als ideal Syntax versucht, dies:

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

Aber nein! "Compilerfehlermeldung: CS1525: Ungültiger Ausdrucksterm '>'" - und es scheint der Lambda-Fehler zu sein. Es funktioniert nicht, wenn ich GroupBy() auch in die foreach-Parameter einfüge.

Gibt es eine Möglichkeit, Lambdas in ASCX-Dateien arbeiten zu lassen?

Antwort

5

Basierend auf der Fehlermeldung, mein erster Instinkt wäre zu sagen, dass Sie den C# 2.0-Compiler verwenden.

Ich bin mir nicht sicher, was der Rückgabetyp von GetModel<T> ist. Aber selbst wenn es eine leere Methode ist, ist der tatsächliche Lambda-Ausdruck ein gültiges syntaktisches Konstrukt. Es sollte einen Überladungsauflösungsfehler und keinen Parsingfehler erzeugen.

Dies ist jedoch nicht der Fall in der C# 2.0-Compiler. Es wäre ein ungültiges syntaktisches Konstrukt und würde diese Fehlermeldung erzeugen.

Können Sie überprüfen, um sicherzustellen, dass Sie die richtige Version des C# -Compilers verwenden?

+0

Ah, es heißt: Versionsinformation: Microsoft .NET Framework Version: 2.0.50727.3053; ASP.NET-Version: 2.0.50727.3053. Wie kann ich v3.5 angeben, und warum würden ASCX-Dateien anders als der Rest meiner Site verarbeitet werden (was definitiv v3.5 ist, wie es im Webprojekt-Eigenschaftenbereich als Zielframework festgelegt wurde)? – tags2k

+0

Nebenbei ist der Rückgabetyp von GetModel Liste tags2k

+1

Sortierte es jetzt - das ist seltsam. Richten Sie ein neues 3.5-Projekt ein, um die web.config-Dateien zu vergleichen, und aus irgendeinem Grund war der Abschnitt system.codedom> compilers leer von meinem anderen Projekt! Ich frage mich, wie lange es so war! – tags2k