我有一个模板片段,如下所示:
<#+
if (length == "0")
#> return record.Substring(offset);
<#+
else
#> return record.Substring(offset, <#= length #>);
当length!=“0”时它工作正常,但当它为“0”时它会发出record.Substring(offset);代码确定但后面跟着文本“0”;“ (不带双引号)在下一行。看起来它正在发出片段“&lt;#= length#&gt;);”来自else块。我不明白为什么?
答案 0 :(得分:2)
你应该总是在T4中使用括号。
return record.Substring(offset, <#= length #>);
转换为类似
的内容Write("return record.Substring(offset, ");
Write(length);
Write(");");
这就是为什么“else”只输出第一部分。
您的代码应该是这样的:
<#+ if (length == "0") { #>
return record.Substring(offset);
<#+ } else { #>
return record.Substring(offset, <#= length #>);
<#+ } #>