首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

VTemplate 模板引擎使用 - 進階篇(一)

     編輯:關於C語言

1、<vt:template> 與 <vt:include> 標籤的不同

<vt:template> 和 <vt:include> 都包含 file 屬性,若都設定 file,看起來很相似,最終效果都是包含檔案內容。但對模板引擎來說差別很大。

<vt:template> 是「模板塊」標籤,能擁有自己的「變數」,會成為內部標籤的「宿主模板」。而 <vt:include> 只是簡單包含檔案內容,內部標籤的「宿主模板」與它相同。

假設有 VT 模板檔案 inc_content.html:

我是包含檔案裡的變數 {$:#.var1}。
我是包含檔案裡的 foreach 標籤:
<vt:foreach from="#.names" item="name" index="i">
包含檔案的第 {$:#.i} 個名字叫 {$:#.name}。
</vt:foreach>

分別用兩標籤包含:

A、<vt:template> 包含:

我是外部的變數 {$:#.var1}。
我是外部的 foreach 標籤:
<vt:foreach from="#.names" item="name" index="i">
外部的第 {$:#.i} 個名字叫 {$:#.name}。
</vt:foreach>
<vt:template id="inc" file="inc_content.html" />

B、<vt:include> 包含:

我是外部的變數 {$:#.var1}。
我是外部的 foreach 標籤:
<vt:foreach from="#.names" item="name" index="i">
外部的第 {$:#.i} 個名字叫 {$:#.name}。
</vt:foreach>
<vt:include id="inc" file="inc_content.html" />

兩塊程式碼看起來相似,但解析後 A 中的 var1 與 inc 模板塊下的 var1 獨立存在,互不影響!B 中的 var1 與 inc 的 var1 相等,引用同一個變數。

假設 A、B 都透過下列程式處理:

this.Document.Variables.SetValue("var1", 1);
this.Document.Variables.SetValue("names", new string[] { "張三", "李四", "王五" });

只對外部變數賦值,最終輸出結果:

輸出比較

可知:<vt:template> 包含的無資料輸出,<vt:include> 包含則有資料輸出且與外部相同!可把 <vt:template> 看成程式語言裡的類別,能擁有自己的變數,改變外部變數不影響內部同名變數,外部標籤可透過 id 獲取內部變數。

具體示例程式碼請參考:https://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester/template_include_test.ashx.cs

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved