2009-02-20 76 views
5

我們在嵌入式資源中有一堆NVelocity模板,我們用它來處理電子郵件。我們希望將這些模板移動到數據庫,以便用戶可以輕鬆配置它們。NVelocity不再支持字符串模板嗎?

看來儘管NVelocity(Castle端口)不支持字符串作爲模板。有誰知道如何去做。

要清楚這就是我想做的事(語法可能是不準確的,我的記憶去)...

string templateString = "Hello $!user"; 
Template template = new Template(templateString); 
string results = template.Merge(....); 

回答

15

這個工作對我來說:

using System.Collections; 
using System.IO; 
using NUnit.Framework; 
using NVelocity; 
using NVelocity.App; 

[Test] 
public void StringParsing() 
{ 
    var h = new Hashtable { 
     { "foo", "Template" }, 
     { "bar", "is working" }, 
     { "foobar", new[] { "1", "2", "3" } } }; 
    Velocity.Init(); 
    var c = new VelocityContext(h); 
    var s = new StringWriter(); 
    Velocity.Evaluate(c, s, "", 
     "$foo $bar: #foreach ($i in $foobar)$i#end"); 
    Assert.AreEqual("Template is working: 123", s.ToString()); 
} 
+0

的NVelocity缺乏良好的文檔是鬱悶,因爲它是這樣一個強大的和有用的庫。我花了很長時間才找到你的答案,所以我把這個問題標記爲未來參考的最愛,然後投票給你答案和問題。 – 2011-04-28 14:09:50