NVelocity宏参数未评估



我希望在NVelocity模板中创建一个内联函数(方法)。解决方案似乎是使用Velocimacros。因此,我模拟了以下模板进行测试:

#macro( getOutput $one $two $three )
<td>$one</td>
<td>$two.Item2</td>
<td>$three</td>
#end
<table>
#foreach( $item in $mdl.Items )
    <tr>
        #set( $one1 = $item.Item1 )
        #getOutput( $one1 $item $item.Item3 )  ## item.Item3 won't evaluate!
    </tr>
#end
</table>

$mdl是我的基本Model对象,在本例中,它包含一个属性Items,即List(Of Tuple(Of String, Integer, Date))。填充测试数据如下:

Dim items As New List(Of Tuple(Of String, Integer, DateTime))
With items
   .Add(New Tuple(Of String, Integer, DateTime)("One", 1, #1/1/2001#))
   .Add(New Tuple(Of String, Integer, DateTime)("Two", 2, #2/2/2002#))
   .Add(New Tuple(Of String, Integer, DateTime)("Three", 3, #3/3/2003#))
End With

当我运行模板时,我遇到的问题是宏参数$three的输出实际上是"$item.Item3",而不是计算为#3/3/2003#。(顺便说一句,如果元组中的3个项是通过.Item调用传递的,那么这与数据类型无关)。

我可以创建一个变量,然后很好地传递它($one1)。我可以传递元组本身并在宏($Item.Item2)内部调用.Item属性,但由于某些原因,在将参数传递给宏时无法调用.Item属性。有什么见解吗?

看起来NVelocity宏支持有限。

http://www.castleproject.org/others/nvelocity/problems.html#macros

另一种选择是使用帮助程序:

NVelocity扩展方法ASP.NET Web表单

相关内容

  • 没有找到相关文章

最新更新