NVelocity读取资源文件

起因

 最近在项目中遇到一个问题,项目是客户端WinForm,里面有一部分模版是html格式,在现在所在的医院设备电脑中有病毒,这次这个问题就跟病毒有关,因为这个病毒会感染html文件.所以才有将html模版文件放到资源中.放到资源中才不会被病毒感染.当然有病毒会让c#的可执行程序没法执行.这里又是另外一种情况了.

 这里为什么还会使用NVelocity模版引擎,是因为项目是.Net Framework 3.5的环境.

正常使用(部分代码)

Template vltTemplate = vltEngine.GetTemplate("content.htm");   //指定模版文件

NVelocity读取资源

private void tmTemplate_Click(object sender, EventArgs e)
{
    Dictionary<string, object> dic = new Dictionary<string, object>();
    string content = Properties.Resources.content;       //读取资源文件
    string htm = GetStringByTemplate(content, dic);
}

/// <summary>
/// 解析html模版
/// </summary>
/// <param name="content">模版内容</param>
/// <param name="dic">模版数据</param>
/// <returns>返回解析好的html内容</returns>
public static string GetStringByTemplate(string content, Dictionary<string, object> dic)
{
    VelocityEngine vltEngine = new VelocityEngine();    //初始化NVeloity
    vltEngine.Init();

    VelocityContext vltContext = new VelocityContext(); //NVelocity上下文
    foreach (var item in dic)
    {
        vltContext.Put(item.Key, item.Value);
    }
    StringWriter vltWriter = new StringWriter();
    vltEngine.Evaluate(vltContext, vltWriter, "print", content);
    return vltWriter.GetStringBuilder().ToString();
}


秋风 2018-11-23