程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> VTemplate模版引擎的使用--進階篇(1)

VTemplate模版引擎的使用--進階篇(1)

編輯:關於C語言

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

<vt:template>和<vt:include> 標簽都包含file屬性,如果這兩個標簽都設置file屬性,那這兩個標簽看起來很相似,並且最終效果都是將文件的內容包含進來。但是對於模版引擎來說它們之間的差別卻是非常的大。

<vt:template>標簽是“模版塊”標簽,它能擁有自己的“變量”,它會成為它內部的標簽的“宿主模版”(OwnerTemplate)。而<vt:include>則只是簡單的將文件內容包含進來,它內部的標簽的“宿主模版”與它相同。

現假如有一個VT模版文件: inc_content.Html

我是包含文件裡的變量 {$:#.var1}。
我是包含文件裡的foreach標簽:
<vt:foreach from=”#.names” item=”name” index=”i”>
包含文件的第{$:#.i}個名字叫{$:#.name}。
< /vt:foreach>

現分別用<vt:template> 和 <vt:include>標簽去包含上面的文件,如下:

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” />

上面兩塊的VT模版代碼看起來很相似,但是經解析後A中的var1與inc這個<vt:template>模版塊下的變量var1分別獨立存在,互不影響!而B中的變量var1與inc這個<vt:include>的變量var1相等,都是引用同一個變量(其它變量類似)。

現假如A、B兩塊的VT模版代碼都通過過下面的程序來處理:

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

也即是只對外部變量var1、names賦值,最終經模版引擎解析輸出後,它們的輸出結果如下:

從圖可知,<vt:template>包含的沒有數據輸出,而用<vt:include>包含則有數據輸出並且和外部數據一模一樣!所以可把<vt:template>標簽看成是程序語言裡的類,它能擁有它自己的變量,改變外部變量的值不會影響到其內部的同名變量,並且外部標簽可通過其id獲取其內部變量!

具體的示例代碼,請參考:http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester/template_include_test.ashx.cs

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved