Вопрос

Я хочу создать встроенную функцию (метод) внутри моего шаблона NELVECITY. Решение для этого, по -видимому, заключается в использовании 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 это мой объект базовой модели, который для этого примера содержит одно свойство, Items, что List(Of Tuple(Of String, Integer, Date)). Анкет Заполнены тестовыми данными, как SO:

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 внутри макроса ($ item.item2), но по какой -то причине я не могу вызвать .Item Свойство при передаче аргумента макро. Какое -нибудь понимание?

Это было полезно?

Решение

Похоже, что поддержка макросов NELVECITY ограничена.

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

Альтернативой будет использование помощников:

Метод расширения NEVELOCITY ASP.NET WEBFORM

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top