【发布时间】:2018-03-27 17:47:49
【问题描述】:
在 PHP 中可以有一个函数,它的主体从渲染模式切换到代码模式,如下所示:
<?php
function renderA(a){
if(a.label){
?><label></label><?php
} else {
?><span></span><?php
}
}
?>
这在 T4 中也可以吗? 我的谷歌搜索把我带到了这里:Is there any way to have functions in basic T4 templates?
但是这个函数定义似乎不允许这样做。
或者至少,它并不明显......
我知道这段 PHP 代码不是很漂亮的代码,但是当您必须在循环中多次调用 renderA 来渲染某些东西时,它会派上用场。我认为 ASP.MVC-razor 也有类似的东西(https://stackoverflow.com/a/6532107/2173353),所以我希望 T4 也能以某种方式支持它......
【问题讨论】:
-
是的,可以通过使用
<# ... #>块标记来确定代码范围(请参阅实体框架从 EDMX 生成的 T4 模板作为示例)。您到底想用 T4 模板尝试什么? -
@TetsuyaYamamoto 我只想创建一个包含 C# 代码和 HTML 渲染的函数,如上面的 PHP 示例所示。到目前为止,我只看到了纯 C# 代码的函数(其中没有进行 html 渲染)。您是否有您提到的这个 E.F. 示例的链接?
-
@user2173353 渲染出来的代码还是C#代码,不能神奇地制作PHP风格的函数。
-
@DavidG 我不知道我是否理解你的评论,但我知道我应该在函数内部用 C# 编写代码而不是 PHP 代码,只是我想要代码/html 切换能力PHP 有。类似于此处介绍的 ASP.MVC 剃刀语法:stackoverflow.com/a/6532107/2173353。 Razor 确实支持这一点,它是 C# 代码。