2012-08-08 14 views
5

ist Code Generation and T4 Text Templates Lesen und ich fand diese Syntax < # = DateTime.Now #>Was ist die Bedeutung von <#= #>

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

Wie unterscheidet es sich von <%= DateTime.Now %> oder <%# DateTime.Now %>.

Google-Suche zeigte nichts

+0

durch die Dokumentation geht, hat es die Syntax von '<% %> '. Sehr identisch. – codingbiz

+0

Während der T4-Texterstellung wird <# = DateTime.Now #> ausgewertet und das Ergebnis in die Ausgabe geschrieben. AFAIK <%= %> bedeutet nichts für die T4 Engine und wird nur so geschrieben wie es ist. – FuleSnabel

+0

@FuleSnabel Ich wusste nicht den Unterschied, ich bin neu in T4, ich dachte, es ist eine andere Art zu schreiben Ausdruck ist asp.net. War mir nur komisch – codingbiz

Antwort

4

Ich kann nicht mit T4-Textvorlagen, um wirklich vertraut behaupten, aber es scheint der Unterschied zwischen Design/Timecode-Generierung bauen (die ausführbaren Anweisungen enthalten kann) und Runtime-Code-Ausführung .

So <#= #> wertet einen Ausdruck in einer Vorlage, die zum Generieren einer Datei verwendet wird.

Und <%= %> führt den Code innerhalb des Blocks und schreibt es in den Ausgabestream. Dies wird JIT-kompiliert, wenn die Seite zum ersten Mal ausgeführt wird, aber der Punkt ist, dass sie einen Code-Block bezeichnet, der ausgeführt werden soll, wenn die Seite läuft, nicht während der Erzeugung einer Vorlagen-Datei.

Die dritte Form, <%# %>, bezeichnet einen Datenbindungsausdruck, der auch ausgewertet wird, wenn die Seite ausgeführt wird.

Expression Steuerblöcke

einer Expressionskontrollbaustein wertet einen Ausdruck aus und wandelt es in eine Zeichenfolge. Dies wird in die Ausgabedatei eingefügt.

Expression Steuerblöcke werden durch die Symbole delimted < # = ... #>

Zum Beispiel die folgenden Steuerblock bewirkt, dass die Ausgabedatei enthalten "5":

<#= 2 + 3 #>

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

+0

Sie meinen '<#= 2 + 3 #>' ist das gleiche wie '<%= 2 + 3 %>'? – codingbiz

+2

Das Endergebnis in der Ausgabe ist das gleiche, aber die Auswertung erfolgt zu unterschiedlichen Zeiten. '<# = 2 + 3 'würde beim Generieren einer Datei ausgeführt, also hätte die generierte Datei" 5 ". '<% = 2 + 3 'wird ausgeführt, wenn Sie eine ASP.Net-Seite ausführen. –

+0

Zum Beispiel wäre es der Unterschied zwischen dem Einfügen eines Zeitstempels, wenn der Code erstellt wird, und dem Auswerten des aktuellen Datums bei jeder Ausführung der Seite. –

Verwandte Themen