NVelocity解析字符串
之前都是先从模板文件里面读取html字符串,现在要求将模板存入数据库或缓存了,怎么办呢?在网上找了下资料,终于找到解决办法。
如下:
public class NVelocityHelper { /// <summary> /// 解析字符串 /// </summary> /// <param name="content">字符串</param> /// <returns></returns> public string ReplaceLabels(string content) { 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, "", content);//$foo $bar: #foreach ($i in $foobar) $i #end return s.ToString(); } }
说明:变量h可以作为参数传递进来,调用如下:
Common.Nvelocity.NVelocityHelper template = new Common.Nvelocity.NVelocityHelper(); var result = template.ReplaceLabels("$foo $bar: #foreach ($i in $foobar) $i #end");
这样就会将字符串解析了。
参考网址:http://stackoverflow.com/questions/568215/does-nvelocity-no-longer-support-string-templates