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