Navelocity -Makroparameter nicht bewertet
Frage
Ich möchte eine Inline -Funktion (Methode) in meiner netzmäßigen Vorlage erstellen. Die Lösung dafür scheint zu verwenden Velocimacros. Also habe ich die folgende Vorlage verspottet, um zu testen:
#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
ist mein Basismodellobjekt, das für dieses Beispiel eine Eigenschaft enthält, Items
, die ein List(Of Tuple(Of String, Integer, Date))
. Mit Testdaten wie SO besiedelt:
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
Wenn ich die Vorlage ausführe, habe ich das Problem, dass die Ausgabe aus dem Makroparameter $three
ist buchstäblich "$ item.Item3", anstatt auf #3/3/2003 #zu bewerten. (Übrigens - dies geschieht mit einem der 3 Elemente im Tupel, wenn sie mit dem übergeben werden .Item
Rufen Sie an, also geht es nicht um den Datentyp).
Ich kann eine Variable machen und sie gut übergeben ($ One1). Ich kann das Tupel selbst übergeben und die Eigentum des Makros ($ item.Item2) anrufen, aber aus irgendeinem Grund kann ich das nicht anrufen .Item
Eigenschaft beim Übergeben des Arguments an das Makro. Irgendwelche Einblicke?
Lösung
Es sieht so aus, als ob die Makrounterstützung für die Navelocity begrenzt ist.
http://www.castleproject.org/others/nvelocity/problems.html#macros
Eine Alternative wäre, Helfer zu verwenden: