2009-02-20 39 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