我们有我们使用的电子邮件嵌入式资源一堆NVelocity模板。我们希望这些模板移动到数据库,使他们能够被用户轻松配置。

看来虽然这NVelocity(青山端口)不支持字符串作为模板。有谁知道如何做到这一点。

需要明确的是,这是我想做的事(语法可能是不准确的,我的记忆去)...

string templateString = "Hello $!user";
Template template = new Template(templateString);
string results = template.Merge(....);
有帮助吗?

解决方案

这对我的作品:

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() );
}

其他提示

这是我自己经过反复研究NVelocity城堡端口似乎将是一个巨大的PITA从一个得到模板在内存中的字符串。

我已经因为放弃NVelocity并开始使用StringTemplate的。特别是该实现: http://websitelogic.net/articles/MVC / StringTemplate的-的ViewEngine-ASP净MVC /

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top