於是找到了 NVelocity 的套件,這個套件在 NuGet 內可以找到,
下面會說明如何使用。
首先新增一個 Method 如下:
/// <summary> /// 將資料套入範本檔 /// </summary> /// <param name="templateLocation">套表範本路徑(不含檔名)</param> /// <param name="templateName">套表範本檔名</param> /// <param name="encoding">語系</param> /// <param name="model">帶入套表的參數</param> /// <returns>Html file</returns> public string MergeTemplate(string templateLocation , string templateName , string encoding , Hashtable model) { // 初始化並取得Velocity引擎 VelocityEngine ve = new VelocityEngine(); ve.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH , HttpContext.Current.Request.MapPath(string.Format("~/{0}/" , templateLocation))); ve.Init(); Template t = new Template(); // 取得velocity的模版 t = ve.GetTemplate(templateName, encoding); // 取得velocity的上下文context VelocityContext context = new VelocityContext(model); // 輸出流 StringWriter writer = new StringWriter(); // 轉換输出 t.Merge(context, writer); string r = writer.ToString(); writer.Flush(); writer.Close(); return r; }
用法:
●C# 語法:
string templateLocation = "vm" //範本檔路徑 string templateName = "temp.html" //範本檔名稱 string encoding = "UTF-8" //編碼 Hashtable model = new Hashtable //參數 model.Add("header", "test header") //「header」是html檔案要套用的參數名稱 //「test header」是參數內的值 VelocityHelper velocityHelper = new VelocityHelper(); string html = velocityHelper.MergeTemplate(templateLocation , templateName , encoding , model);
●範本檔(html)的部份
在要套上參數的地方名稱加上「$」即可,如:「$header」
而這個名稱要跟 C# 程式碼的名稱對應。
參數也可以用物件帶入:
●C# 語法:
public class HeaderModel { public string text; public string value; } HeaderModel hm=new HeaderModel(); model.Add("header", hm);
●範本檔(html)的部份:
$header.text $header.value
沒有留言:
張貼留言