2

我在使用 NVelocity 方面相当陌生。我正在尝试为我的公司编辑一些旧模板,但我遇到了这个我不明白的错误。好的,所以在模板中,如果订单有多个货件,则显示多个货件名称,如果只有一个货件名称,则仅显示一个货件名称。当有多个货物时,它可以正常工作,但是当只有一个货物时,模板不会呈现所需的 shiment 名称,而是打印出类名。

 #if($order.Shipments.Count > 1) 
 #foreach($shipment in $order.Shipments)
 #beforeall 
 #each 
 $shipment.ShipMethodName <strong>|</strong> 
 #else
 $order.Shipments[0].ShipMethodName  // in emails it renders "Orders.OrderShipmentCollection[0].ShipMethodName"
 #end
 #end

请帮忙。

4

1 回答 1

1

我知道这是一个老问题,但如果有人稍后在寻找解决方案,我想我会发布一个答案,因为我正在处理没有接受答案的老问题。当我在去年 9 月发布该评论时,我没有注意到这个错误。

$order.Shipments[0].ShipMethodName给你Orders.OrderShipmentCollection[0].ShipMethodName是因为 NVelocity 不支持像 C# 这样的索引器,你需要使用该get_Item()方法,即$order.Shipments.get_Item(0).ShipMethodNameC# 编译器为索引器创建的底层方法。

正在发生的事情是$order.Shipments打印出类型名称 ( Orders.OrderShipmentCollection),其余的[0].ShipMethodName只是逐字打印。

于 2014-10-03T08:28:53.680 回答