<#=#>的含义是什么?

cod*_*biz 5 .net asp.net syntax t4 expression

阅读代码生成和T4文本模板,我发现这个语法<#= DateTime.Now#>

<html><body>
 The date and time now is: <#= DateTime.Now #>
</body></html>
Run Code Online (Sandbox Code Playgroud)

它与<%= DateTime.Now %>or 有什么不同<%# DateTime.Now %>

谷歌搜索没有显示

Tim*_*ora 4

我不能声称自己真正熟悉 T4 文本模板,但似乎区别在于设计/构建时代码生成(可以包括可执行语句)和运行时代码执行之间。

因此<#= #>计算用于生成文件的模板内的表达式。

<%= %>执行块内的代码并将其写入输出流。这将在页面首次执行时进行 JIT 编译,但重点是它表示在页面运行时执行的代码块,而不是在生成模板文件期间执行。

第三种形式<%# %>表示数据绑定表达式,也在页面执行时进行计算。

表达控制块

表达式控制块计算表达式并将其转换为字符串。这被插入到输出文件中。

表达式控制块由符号 <#= ... #> 界定

例如,以下控制块使输出文件包含“5”:

<#= 2 + 3 #>

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

  • 输出的最终结果是相同的,但评估发生在不同的时间。`&lt;#= 2+3` 将在您生成文件时执行,因此您生成的文件中将包含“5”。当您运行 ASP.Net 页面时,将执行“&lt;%= 2+3”。 (2认同)