2012-08-08 26 views
5

lettura Code Generation and T4 Text Templates e ho trovato questa sintassi < # = # DateTime.Now>Qual è il significato di <#= #>

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

Come è diverso da <%= DateTime.Now %> o <%# DateTime.Now %>.

ricerca di Google ha mostrato nulla

+0

passare attraverso la documentazione, ha tutte le sintassi del '<% %> '. Molto identico – codingbiz

+0

Durante la generazione del testo T4 <# = DateTime.Now #> viene valutato e il risultato viene scritto nell'output. AFAIK <%= %> non significa nulla per il motore T4 ed è appena scritto così com'è. – FuleSnabel

+0

@FuleSnabel Non sapevo la differenza, sono nuovo di T4, ho pensato che fosse un altro modo di scrivere espressione asp.net. Mi era solo strano – codingbiz

risposta

4

non posso affermare di essere molto familiare con modelli di testo T4, ma sembra sia la differenza tra progettazione/costruzione generazione di codice di tempo (che può includere istruzioni eseguibili) e l'esecuzione di codice runtime .

Quindi <#= #> valuta un'espressione all'interno di un modello utilizzato per generare un file.

E <%= %> esegue il codice all'interno del blocco e lo scrive nel flusso di output. Questo sarà JIT-compilato quando la pagina viene eseguita per la prima volta, ma il punto è che indica un blocco di codice da eseguire quando viene eseguita la pagina, non durante la generazione di un file di modello.

Il terzo modulo, <%# %> denota un'espressione di associazione, valutata anche quando la pagina viene eseguita.

blocchi di controllo Espressione

Un blocco di controllo di espressione valuta un'espressione e converte in una stringa. Questo è inserito nel file di output.

blocchi di controllo Espressione sono delimted dai simboli < # = ... #>

Ad esempio, il seguente blocco di controllo fa sì che il file di output per contengono "5":

<#= 2 + 3 #>

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

+0

Vuoi dire "<#= 2 + 3 #>" è lo stesso di "<%= 2 + 3 %>"? – codingbiz

+2

Il risultato finale nell'output è lo stesso, ma la valutazione avviene in momenti diversi. '<# = 2 + 3' verrebbe eseguito quando hai generato un file, quindi il file generato avrebbe" 5 "in esso. '<% = 2 + 3' verrà eseguito quando si esegue una pagina ASP.Net. –

+0

Ad esempio, sarebbe la differenza tra l'inserimento di un timestamp quando il codice viene creato rispetto alla valutazione della data corrente ogni volta che viene eseguita la pagina. –

Problemi correlati