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

原文地址:https://www.cnblogs.com/subendong/p/5178386.html