2012-08-08 30 views
5

lectura Code Generation and T4 Text Templates y me encontré con esta sintaxis < # = # DateTime.Now>¿Cuál es el significado de <#= #>

<html><body> 
The date and time now is: <#= DateTime.Now #> 
</body></html> 

¿Cómo se diferencia de <%= DateTime.Now %> o <%# DateTime.Now %>.

búsqueda de Google no mostró nada

+0

pasando por la documentación, tiene toda la sintaxis de '<% %> '. Muy idéntico – codingbiz

+0

Durante la generación de texto T4 <# = DateTime.Now #> se evalúa y el resultado se escribe en la salida. AFAIK <%= %> no significa nada para el motor T4 y se acaba de escribir como está. – FuleSnabel

+0

@FuleSnabel No sabía la diferencia, soy nuevo en T4, pensé que era otra forma de expresión de la escritura asp.net. Fue extraño para mí – codingbiz

Respuesta

4

no puedo pretender estar muy familiarizado con plantillas de texto T4, pero parece que es la diferencia entre diseño/construcción generación de código de tiempo (que puede incluir instrucciones ejecutables) y la ejecución de código en tiempo de ejecución .

Así <#= #> evalúa una expresión dentro de una plantilla que se utiliza para generar un archivo.

Y <%= %> ejecuta el código dentro del bloque y lo escribe en la secuencia de salida. Esto se compilará JIT cuando la página se ejecute por primera vez, pero el punto es que denota un bloque de código para ejecutar cuando se ejecuta la página, no durante la generación de un archivo con plantilla.

El tercer formulario, <%# %> denota una expresión de enlace de datos, también evaluada cuando se ejecuta la página.

bloques de control de la expresión

Un bloque de control de la expresión evalúa una expresión y la convierte a una cadena. Esto se inserta en el archivo de salida.

bloques de control de la expresión se delimted por los símbolos < # = # ...>

Por ejemplo, el siguiente bloque de control hace que el archivo de salida para contiene "5":

<#= 2 + 3 #>

Fuente: http://msdn.microsoft.com/en-us/library/bb126478

+0

Quiere decir '<#= 2 + 3 #>' es lo mismo que '<%= 2 + 3 %>'? – codingbiz

+2

El resultado final en el resultado es el mismo, pero la evaluación ocurre en momentos diferentes. '<# = 2 + 3 'se ejecutará cuando genere un archivo, por lo que su archivo generado tendrá" 5 "en él. '<% = 2 + 3' se ejecutará cuando ejecute una página ASP.Net. –

+0

Por ejemplo, sería la diferencia entre insertar una marca de tiempo cuando se construye el código versus evaluar la fecha actual cada vez que se ejecuta la página. –

Cuestiones relacionadas