テンプレートエンジンの例


一般的な処理プログラムでは、テンプレートエンジンを使用して、フロントエンドとバックエンドコードの分離保守を実現することができます。ツールのダウンロードアドレス:http://www.castleproject.org/download/  (NVelocity.dll)参照すればいいです。
       //  
            Person person = new Person();
            person.Name = "yzk";
            person.Age = 30;
       //list
            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict["tom"] = " ";
            dict["jim"] = " ";
            dict["yzk"] = " ";

         //クラスの定義とオブジェクトの宣言を初期化して一緒にします。 //匿名系var news=new{Title=特大朗報}Author=「楊中科」、PostDate=「2013-11-08」、Msg=「今夜は朗報詳細を発表します!」string s=news.PostDate;
            VelocityEngine vltEngine = new VelocityEngine();
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//          
            vltEngine.Init();

            VelocityContext vltContext = new VelocityContext();
            vltContext.Put("p", person);//    ,        $data   
       vltContext.Put("p", dict);// , $data Template vltTemplate = vltEngine.GetTemplate("test.htm"); System.IO.StringWriter vltWriter = new System.IO.StringWriter(); vltTemplate.Merge(vltContext, vltWriter); string html = vltWriter.GetStringBuilder().ToString(); context.Response.Write(html);
 
<ul>
    #foreach($p in $persons)
        #if($p.Age>20)
          <li style="color:Red">$p.Name    $p.Age</li>
        #else
          <li style="color:Green">$p.Name    $p.Age</li>
        #end
    #end
</ul>
 
httmではバックグラウンドのデータを$pで受け取り、フロントでは文字列$p、オブジェクト$p.Name、インデックス$p.tomなどを受け取ることができます。