¿Podemos usar la syntax de Razor en Webforms de ASP.NET (páginas * .aspx)?

Me gusta la syntax de Razor que Microsoft ha desarrollado para la encoding en línea en su producto WebMatrix (http://en.wikipedia.org/wiki/Microsoft_WebMatrix).

Ahora que Visual Studio SP1 tiene RTM, ¿es posible (y / o planificado) habilitar el uso de la syntax Razor en Webforms de ASP.NET?

¡Gracias!

Nosotros (el equipo de ASP.NET) actualmente no tenemos planes para admitir el modelo de página de WebForms usando la syntax de Razor. Además, es poco probable que alguna vez lo consideremos seriamente, ya que los modelos son demasiado diferentes para hacer que los dos funcionen juntos.

Puede usar páginas Razor sin MVC; esto se llama ASP.Net WebPages.

Simplemente agregue archivos .CSHTML a un proyecto ASP.Net 4.0 normal.

Le expliqué cómo funciona esto en mi blog.

Posiblemente podría integrarlo usando el RazorEngine disponible de Codeplex . Le permite procesar la afeitadora fuera de MVC. Aunque no obtienes todas las características que obtienes de la versión MVC de Razor, como @Html y @Url y otras.

Me atrevo a decir que Microsoft lo ha considerado, pero no hay una palabra oficial sobre el tema. Como no se supone que tengas código C # o VB en el archivo ASPX, debes preguntarte sobre el punto de agregar soporte Razor a los formularios web. El código detrás seguiría siendo un archivo de clase (parcial). No pondría Razor allí más de lo que pondría en un archivo de clase en páginas web o MVC. E intercambiar Controles de servidor y todo lo bueno declarativo para Html Helpers elimina uno de los motivos clave para ir a la ruta de formularios web, IMO.

Esto realmente no es tan difícil de hacer. Trabajando en eso ahora mismo. Grab RazorEngine de CodePlex. Te permite comstackr los archivos Razor cshtml / vbhtml en una clase en tiempo de ejecución.

Luego puede tomar esa clase y usarla desde un control de servidor ASP.Net, dentro de su método Render. Esta es una gran manera de sacar HTML del cuerpo de un control de servidor. Mucho, mucho más limpio.

Ahora, también puede agregar algunos métodos que puede invocar desde Razor. Por ejemplo, agrega algo como RenderChild. Además, puede establecer el Control del servidor como el Modelo disponible para Razor. A continuación, puede invocar en el control del servidor. Incluyendo hacer algo así como tomar uno de sus controles secundarios e invocar Render.