题
我们有我们使用的电子邮件嵌入式资源一堆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 /
不隶属于 StackOverflow