本文要說(shuō)明的是如果要在項(xiàng)目中加入NVelocity引擎模板。而且在使用和操作起來(lái)更加的方便!
NVelocity是一個(gè)基于.NET的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由.NET代碼定義的對(duì)象。至于其他的一些別的NVelocity的的解釋、和一些用法這里就不在提及。
具體的使用方法:
1,定義Velocity輔助類(VelocityHelper.cs)
提供下載 當(dāng)然,這個(gè)輔助類需要添加NVelocity.dll的引用。
2,aspx頁(yè)面和Template的結(jié)構(gòu)說(shuō)明
這個(gè)其實(shí)是需要根據(jù)個(gè)人喜好來(lái)定!為了更好的能看清自己的結(jié)構(gòu),我是這樣來(lái)放置的!如圖:
Template放置所有 *.vm模板
其中:Browse文件夾放置前臺(tái)頁(yè)面的模板,Manage文件夾放置后臺(tái)頁(yè)面模板。需要注意的是這連個(gè)文件夾下的Default文件夾只是一個(gè)區(qū)分前臺(tái)或者后臺(tái)模板的一個(gè)標(biāo)識(shí),在調(diào)用時(shí)來(lái)區(qū)分。
Manage文件夾放置管理的*.aspx頁(yè)面
Manage文件夾下的頁(yè)面例如LinkTypeEdit.aspx所調(diào)用的模板就為Template/Defalut/LinkTypeEdit.vm。名稱依次對(duì)應(yīng),當(dāng)然,對(duì)應(yīng)不是必須的。
根目錄放置前臺(tái)*.aspx頁(yè)面
前臺(tái)頁(yè)面調(diào)用的模板為Template/Browse/Defalut/下的模板,和管理頁(yè)面一樣也是名稱相互對(duì)應(yīng)。
3,調(diào)用、賦值方法
在項(xiàng)目中加入VelocityHelper.cs這個(gè)輔助類。
我們以Defalut.aspx為例來(lái)大概講解,首先我們先編輯Template/Browse/Defalut/Default.vm,這是我們首頁(yè)的模板。
可以看到我們?cè)趦蓚(gè)地方使用了模板的變量,分別是$PageTitle,$hello。這樣們肯定就需要在Default.aspx中利用引擎模板來(lái)做為變量賦值、顯示模板等操作。
下面就讓我們來(lái)處理一下Defalut.aspx頁(yè)面,因?yàn)轱@示完全是使用模板,所以Default.aspx頁(yè)面時(shí)不需要有任何的東西,只留下@ Page 的一行就可以。后臺(tái)代碼在Page_Load事件中,我們就要作出相應(yīng)的操作了!
protected void Page_Load(object sender, EventArgs e){
//創(chuàng)建輔助類
Luz.Web.Util.VelocityHelper vh = new Luz.Web.Util.VelocityHelper();
//模板位置
string templatePath = "/Template/Browse/Defalut/";
//通過(guò)模版位置初始化引擎
vh.Init(templatePath);
//為變量賦值,第一個(gè)參數(shù)是變量的名稱,也就是你在模版也中寫的變量的名稱,注意沒(méi)有"$";第二個(gè)參數(shù)是值,Object類型。
vh.PutSet("PageTitle", "Hi I am Title");
vh.PutSet("hello", "Hello NVoleCity");
//顯示模板
vh.Display("Default.vm");
}
protected void Page_Load(object sender, EventArgs e){ //創(chuàng)建輔助類 Luz.Web.Util.VelocityHelper vh = new Luz.Web.Util.VelocityHelper(); //模板位置 string templatePath = "/Template/Browse/Defalut/"; //通過(guò)模版位置初始化引擎 vh.Init(templatePath); //為變量賦值,第一個(gè)參數(shù)是變量的名稱,也就是你在模版也中寫的變量的名稱,注意沒(méi)有"$";第二個(gè)參數(shù)是值,Object類型。 vh.PutSet("PageTitle", "Hi I am Title"); vh.PutSet("hello", "Hello NVoleCity"); //顯示模板 vh.Display("Default.vm"); }
這樣,運(yùn)行一下看看,是不是模板已經(jīng)顯示出來(lái),而且$PageTitle和$hello已經(jīng)被替換成了我們?cè)赑age_Load事件中為它賦的值。當(dāng)然,賦值的時(shí)候你可以是任何類型,包括List泛型(模板中使用#foreach遍歷)等。