NVelocity模板引擎


簡介

      NVelocity是一個基於.NET的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由.NET代碼定義的對象。

語法

   
#include("head.htm") //引入文件
#parse("head.htm")   //引入文件,與include不同的是,parse可以解析文件中的對象
#set ($age =20)  //定義一個age變量,並通過set賦值    
$age  //展示變量age 
 
 
     //簡單判斷              
      #if($age>10)     
         懵懂騷年
      #else
         花樣年華
      #end
     //復雜判斷
     #if( $age > 5 && $age <= 10 ) 
          學英語,so easy!
      #elseif( $age > 10 && $age <= 16)
          作業多,怎么辦
      #elseif( $age > 16 && $age <= 19)
          化學難! 
      #else
          后來我們開始懷念上學了!
      #end
      //通過foreach循環遍歷集合元素
      #foreach($p in $Model.Persons)   
         $p.Name  //姓名
         $p.Age   //年齡
         $p.Phone //手機號
      #end
    

NVelocity配合一般處理程序(簡單使用)

      
 <table class="doc-table" >
          <thead><tr><td>姓名</td><td>年齡</td><td>手機號碼</td></tr></thead>
          <tbody>
             #foreach($p in $Model.Persons)  //通過$Model.Persons循環生成tr中內容
                <tr><td>$p.Name</td><td>$p.Age</td><td>$p.Phone</td>
             #end
          </tbody>
</table>
    public class Test : IHttpHandler {
        public void ProcessRequest(HttpContext context) {
            context.Response.ContentType = "text/html";  //設置輸出html
            List<person> list = new List<person>();      //循環生成泛型List<person>
            for (int i = 1; i <= 10; i++) {
                Person p = new Person() { Name = "長江" + i + "號", Age = 18 + i, Phone = (18801001618 + i).ToString() };
                list.Add(p);
            }
            var data = new { Persons = list };           //將list綁定到匿名類的Persons屬性

            VelocityEngine vltEngine = new VelocityEngine();    //初始化NVeloity
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");

            //使用System.Web.Hosting命名空間下的HostingEnvironment.MapPath 指定模板文件所在的文件夾
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,HostingEnvironment.MapPath("~/templates"));

            vltEngine.Init();

            VelocityContext vltContext = new VelocityContext(); //NVelocity上下文

            //給數據data指定一個key為"Model",在模板頁(視圖)中$Model,通過put方法放入NVelocityContext中
            vltContext.Put("Model", data);  

            Template vltTemplate = vltEngine.GetTemplate("test.htm"); //獲取模板所在的路徑和文件名(相對於指定模板文件夾的位置)
            StringWriter vltWriter = new StringWriter();
            vltTemplate.Merge(vltContext, vltWriter);     //內部通過Render解析遍歷“Model”
            string htm = vltWriter.GetStringBuilder().ToString();

            context.Response.Write(htm);
        }        
    }
    
    //聯系人
    public class Person {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Phone { get; set; }
    }

總結

     1.通過NVelocity可以讓我們頁面設計人員可以只關注頁面的顯示效果,而又可以讓我們.NET程序開發人員關注業務邏輯實現,為后期維護也提供很大的便利性;

     2.NVelocity和一般處理程序相結合,可以避免復雜的aspx頁面生命周期;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM