Domanda

Sto cercando di creare una funzione inline (metodo) all'interno del mio modello Nvelocity. La soluzione a questo sembra essere usare Velocimacros. Quindi, ho deriso il seguente modello per testare:

#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 è il mio oggetto modello base, che per questo esempio contiene una proprietà, Items, il quale è un List(Of Tuple(Of String, Integer, Date)). Popolato con dati di test come così:

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

Quando eseguo il modello, il problema che sto riscontrando è che l'output dal parametro macro $three è letteralmente "$ item.item3" invece di valutare al numero 3/3/2003 #. (Btw - questo accade con uno dei 3 elementi nella tupla se vengono passati con il .Item Chiama, quindi non riguarda il tipo di dati).

Posso fare una variabile e passarla bene ($ one1). Posso passare la tupla stessa e chiamare la proprietà .item all'interno della macro ($ item.item2), ma per qualche motivo non posso chiamare il .Item Proprietà quando si passa l'argomento alla macro. Qualche intuizione?

È stato utile?

Soluzione

Sembra che il supporto macro di Nvelocity sia limitato.

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

Un'alternativa sarebbe quella di usare gli aiutanti:

Metodo di estensione Nvelocity ASP.NET WebForm

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top