[英]Using PHP-like functions in T4 templates
在PHP中,可能有一个函数,其主体从渲染模式切换到代码模式,如下所示:
<?php
function renderA(a){
if(a.label){
?><label></label><?php
} else {
?><span></span><?php
}
}
?>
T4也有可能吗? 我的Google搜索将我引到了这里: 有没有办法在基本的T4模板中具有功能?
但是此函数定义似乎不允许这样做。
或者至少,它确实不明显...
我知道这个PHP代码不是漂亮的代码,但是当您必须在循环中多次调用renderA
来渲染某些东西时,它很方便。 我认为ASP.MVC-razor也有类似的东西( https://stackoverflow.com/a/6532107/2173353 ),所以我希望T4也能以某种方式支持它。
好。 我在这里找到了答案: 如何创建一种封装T4模板文本部分的方法?
看来, <# #>
和<#+ #>
的特殊组合可以解决问题。
<#+
public void RenderA(MyClass a){
if(a.label != null){
#><label><#= a.text #></label><#+
} else {
#><span><#= a.text #></span><#+
}
}
#>
本质上,您像往常一样使用<#= #>
进行字符串插值,并使用<#+ #>
继续使用函数体。
链接的问题中还有另一种替代方法,它使用嵌入式Lambda声明( https://stackoverflow.com/a/23840134/2173353 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.