1、NVelocity是什麼?
答:NVelocity是一個基於.NET的模板引擎(template engine).它允許任何人僅僅簡單的使用模板語言(template language)來引用由.NET代碼定義的對象。
2、NVelocity有什麼作用(有什麼裨益)?
答:當NVelocity 應用於Web開發時,界面設計人員和.NET程序開發人員同步開發一個遵守MVC架構的Web站點,也就是說頁面設計人員可以只關注頁面的顯示效果,而 由.NET 開發人員關注業務邏輯編碼。NVelocity將.NET 代碼從Web界面中分離出來,這樣爲Web站點的長期維護提供了方便,同時也爲我們在aspx之外又提供了一種可選方案。
NVelocity的能力遠不止Web站點開發這個領域,例如:它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立的工具來產生源代碼和報告,或者作爲其他系統的集成組件使用。
nVelocity也可以爲很多web開發架構提供模板服務(template service)。我們的系統就提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。
3、我們如何使用NVelocity?
.Net之NVelocity的三種用法 【轉】
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Server.MapPath("~/Template/"));
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("PageTitle", "文件模板例子");
vltContext.Put("ListUsers", listUsers);
Template vltTemplate = vltEngine.GetTemplate("Default.htm");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
Response.Write(vltWriter.GetStringBuilder().ToString());
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
IList<string> listAssembly = new List<string>();
// 添加程序集名稱
listAssembly.Add("LibTest");
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "assembly");
vltEngine.SetProperty("assembly.resource.loader.class", "NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader; NVelocity"); // 固定寫法- -!
vltEngine.SetProperty("assembly.resource.loader.assembly", listAssembly);
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("PageTitle", "資源模板例子");
vltContext.Put("ListUsers", listUsers);
Template vltTemplate = vltEngine.GetTemplate("LibTest.Resources.Default.htm");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
Response.Write(vltWriter.GetStringBuilder().ToString());
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("#foreach(uinListUsers)"r"n" +
"#beforeall"r"n" +
"<table border=""0"" cellpadding=""10"" cellspacing=""10"">" +
"<tr><td>Name</td><td>Sex</td><td>City</td></tr>" +
"#each"r"n" +
"<tr>" +
"<td>$u.Name</td>" +
"<td>$u.Sex</td>" +
"<td>$u.City</td>" +
"</tr>" +
"#afterall"r"n" +
"</table>" +
"#nodata"r"n" +
"暫無用戶資料"r"n" +
"#end");
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("PageTitle", "字符串模板例子");
vltContext.Put("ListUsers", listUsers);
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltEngine.Evaluate(vltContext, vltWriter, null, builder.ToString());
Response.Write(vltWriter.GetStringBuilder().ToString());