テンプレートエンジンの例
3946 ワード
一般的な処理プログラムでは、テンプレートエンジンを使用して、フロントエンドとバックエンドコードの分離保守を実現することができます。ツールのダウンロードアドレス:http://www.castleproject.org/download/ (NVelocity.dll)参照すればいいです。
httmではバックグラウンドのデータを$pで受け取り、フロントでは文字列$p、オブジェクト$p.Name、インデックス$p.tomなどを受け取ることができます。
//
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などを受け取ることができます。