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?

War es hilfreich?

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:

Nvelocity -Erweiterungsmethode ASP.NET Webform

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top