NVelocity是否不再支持字符串模板?

时间:2009-02-20 03:51:01

标签: nvelocity

我们在嵌入式资源中有一堆用于电子邮件的NVelocity模板。我们希望将这些模板移动到数据库中,以便用户可以轻松配置它们。

似乎NVelocity(Castle端口)不支持字符串作为模板。有谁知道怎么做。

要清楚这就是我想要做的事情(语法可能不准确,我是按记忆去的)......

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

2 个答案:

答案 0 :(得分: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() );
}

答案 1 :(得分:0)

经过我自己的研究后,NVelocity的Castle端口似乎是从内存字符串中获取模板的巨大PITA。

我已经放弃了NVelocity并开始使用StringTemplate。特别是这个实现:http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc/