2009-07-02 11 views
5

Después de haber trabajado en MVC durante unos meses, estoy de regreso en una aplicación WebForms 3.5 previamente escrita, y estoy tratando de arreglar lo que pueda con lo que he aprendido.Soporte de Linq Lamba en WebForms ASCX

Parte de esto es el concepto de "modelo fuertemente tipado con una vista parcial" que es increíblemente increíble. Heredando mi costumbre de control "ListTemplate", que puede entonces utilizar su método getModel() para obtener algo parecido a esto:

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

entonces puedo ejecutar un foreach sobre el modelo, y todo está feliz. Sin embargo, lo que quería hacer una agrupación por lo que añade referencias a:

Entonces, con un poco menos que ideales sintaxis, intentado esto:

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

Pero no! "Mensaje de error del compilador: CS1525: término de expresión inválido '>'" - y parece ser el lambda en falta. No funciona si coloco el GroupBy() en los parámetros foreach tampoco.

¿Hay alguna forma de que lambdas funcione dentro de los archivos ASCX?

Respuesta

5

Basado en el mensaje de error, mi primer instinto sería decir que está utilizando el compilador C# 2.0.

No estoy seguro de cuál es el tipo de devolución de GetModel<T>. Pero incluso si se trata de un método vacío, la expresión lambda real es una construcción sintáctica válida. Debería producir un error de resolución de sobrecarga, no un error de análisis.

Sin embargo, este no es el caso en el compilador C# 2.0. Sería una construcción sintáctica inválida y produciría ese mensaje de error.

¿Puedes verificar si estás utilizando la versión correcta del compilador de C#?

+0

Ah, sí dice: Información de la versión: Microsoft .NET Framework Version: 2.0.50727.3053; Versión ASP.NET: 2.0.50727.3053. ¿Cómo puedo especificar v3.5 y por qué los archivos ASCX se procesarían de forma diferente al resto de mi sitio (que definitivamente es v3.5, ya que se configuró como el marco de destino en el panel de propiedades del proyecto web)? – tags2k

+0

Como un lado, el tipo de devolución de GetModel es List tags2k

+1

Ordenado ahora - eso es raro. ¡Establecí un nuevo proyecto 3.5 para comparar los archivos web.config y por alguna razón la sección system.codedom> compilers estaba vacía de mi otro proyecto! ¡Me pregunto cuánto tiempo ha sido así! – tags2k