2010-02-02 77 views
0

我使用Castles的NVelocity引擎來完成一些模板工作。這是問題。我的幾個模板工作正常,但其中一個不是。Castle NVelocity包含變量而不是變量內容

#foreach($i in $Items) 
<div class="grid_3 folioItem"> <a rel="prettyPhoto[portfolio]" href="$i.Link" class="lightBox"><img src="$i.Image" width="220" height="125" alt="showcase" /></a> 
    <h4>$i.ShortName</h4> 
    <p>$i.LongName</p> 
    <p><a class="button pngFix" href="$i.Link">$i.LinkText</a></p> 
</div> 
#end 

出於某種原因,上述代碼工作的一半。我得到了六套帶有所有內臟的div標籤,但Velocity輸出$ i.ShortName而不是$ i.ShortName中的內容。任何線索爲什麼這是?如果我得到六個輸出會讓我相信項目設置正確並存在於速度模板中。但是由於一些奇怪的原因,孩子們沒有。

現在的項目是List<CategoryItem>,我一遍又一遍地檢查以確保我沒有拼錯成員的名字。

我錯過了什麼?

+0

作爲一個例子我越來越

$ i.LongName

而不是

這是一個長期名稱

2010-02-02 16:45:29

回答

0

好的。所以我想通了(我認爲)它似乎是子對象將只暴露他們的屬性到模板。例如:

public class Item{ 
    public string BadName; 
    public stirng GoodName { 
     get { 
      return "Foo" 
     } 
    } 
} 

GoodName可以在模板中引用,但BadName不能

+0

請參閱http: //svn.castleproject.org:8080/svn/castle/NVelocity/trunk/src/NVelocity/App/FieldMethodizer.cs for rationale – 2010-02-02 17:37:56