基於.NET的免費開源的模板引擎---VTemplate(轉)

一、VTemplate模板引擎的簡介html

VTemplate模板引擎也簡稱爲VT,是基於.NET的模板引擎,它容許任何人使用簡單的相似HTML語法的模板語言來引用.NET裏定義的對象。當VTemplate應用於web開發時,界面設計人員能夠和程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員能夠只關注頁面的顯示效果,而由程序開發人員關注業務邏輯編碼。VTemplate將.NET程序代碼從web頁面中分離出來,這樣爲web站點的長期維護提供了便利,同時也爲咱們在ASP.NET WebForm開發以外又提供了一種可選的方案。 VTemplate也能夠做爲動態文本生成工具,生成HTML、XML、郵件、程序源代碼或其它文本等。web

 

 

二、VTemplate模板的特點:express

2.一、VT是一種解釋型的模板引擎,因此你能夠隨時更改你的模板代碼以得到不一樣的輸出,而不須要從新編譯程序代碼
2.二、VT支持緩存,也就是模板只須要解析一次,下次就能夠直接從內存裏構建您的模板對象而不須要再次解析模板代碼,除非相關的模板文件已被修改。
2.三、VT的模板標籤語法是基於HTML規範定義的元素,因此對頁面設計人員來講是很是友好的。
2.四、VT模板支持循環、條件判斷、數值表達式計算等,以方便你在模板裏直接進行邏輯處理。數組

2.五、VT支持直接調用對象裏的方法
例子:
------------模板代碼--------------
<vt:function var="data" method="GetData" type="$user" />
<vt:set var="data" value="$user.GetData()" />
----------------------------------緩存

上面模板裏第一種採用function標籤調用user對象的GetData方法,第二種則直接採用變量表達式執行方法。服務器


2.六、VT能夠很靈活的直接獲取對象的屬性、字段、集合項等數據。
例子:
------------模板代碼--------------
<h4>姓名:{$user.name}</h4>
----------------------------------session

上面的變量元素裏,user能夠爲架構

public class user{
 public string name;
}app

也能夠爲
public class user{
 public string name{get;set;}
}dom

也能夠爲
var user = new Dictionary<string, string>();
user.Add("name","張三");


VT會自動判斷user對象的name是存在於對象的字段、屬性仍是集合項裏。

 

 

三、VTemplate模板範例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
<title> test1 </title> 
</head> 
<body> 
<vt:for from="1" to="9" index="i"> 
<vt:for from="1" to="$i" index="j"> 
<vt:expression var="r" args="$i" args="$j" expression="{0}*{1}" />{$:i}*{$:j}={$:r}&nbsp;&nbsp;&nbsp;&nbsp; 
</vt:for
<br /> 
</vt:for
</body> 
</html>

以上模板代碼通過VTemplate解析運行後將輸出一個99乘法表,以下:

1*1=1     
2*1=2     2*2=4     
3*1=3     3*2=6     3*3=9     
4*1=4     4*2=8     4*3=12     4*4=16     
5*1=5     5*2=10     5*3=15     5*4=20     5*5=25     
6*1=6     6*2=12     6*3=18     6*4=24     6*5=30     6*6=36     
7*1=7     7*2=14     7*3=21     7*4=28     7*5=35     7*6=42     7*7=49     
8*1=8     8*2=16     8*3=24     8*4=32     8*5=40     8*6=48     8*7=56     8*8=64     
9*1=9     9*2=18     9*3=27     9*4=36     9*5=45     9*6=54     9*7=63     9*8=72     9*9=81   

而程序處理代碼則只有簡單的兩行,以下: 
注:假設上面的模板代碼存放在test1.html文件上

TemplateDocument document = new TemplateDocument(Server.MapPath("template/test1.html"), Encoding.UTF8); 
document.Render(Response.Output);

 

 

四、什麼是VT模板元素?

VT模板元素VTemplate模板引擎定義的有特殊做用的模板語言元素,分爲標籤元素變量元素

4.一、標籤元素都是程序邏輯控制元素,是標準的HTML標籤元素,如上例中用於循環處理的<vt:for>標籤和用於計算表達式值的<vt:expression>標籤等

4.二、變量元素是數據輸出元素,其格式是以「{$:」字符開頭,以「}」字符結束。 如上例中的{$:i}、{$:j}和{$:r}等

注:3.7版本後,變量元素的定義能夠取消「:」號,即以「{$」字符開頭,如{$i}、{$j}與上面的定義不一樣,但都是同樣輸出變量的值。

五、變量、變量標識、變量表達式

5.一、變量是VTemplate模板引擎中的核心元素,用於存儲或控制數據的輸出,其相似於程序語言中的「變量」概念,定義格式也是同樣。如上例中的i,j,r變量。

5.二、變量標識由兩部分組成:變量前綴與變量(名)。其中「變量前綴」能夠省略,如「#.i」,「#u.i」,「u「

        變量前綴:以#號開頭後跟模板塊的Id值,用於指示此變量是取自於對應Id的模板塊下的變量,如#my.user則表示user變量是取自於Id爲my的模板塊下的變量;若是省略Id 號,即前綴只爲#號,則表示是當前模板塊下的變量;而若是前綴是「##」,則表示是當前模板塊的父模板塊(若是不存在父級模板塊則爲當前模板塊)下的變量;若是省略前綴,則表示是文檔(根)模板塊的變量

5.三、變量表達式則是定義獲取變量中某個字段、屬性或函數方法結果值。

定義格式爲:「變量標識.變量字段/屬性/函數方法/索引值」。

變量字段/屬性/函數方法/索引值:表示要從變量中取得數據的字段/屬性/函數方法/索引值(數字),其中函數方法只支持不帶參數的方法。此段能夠定義0次或屢次。

例子:

#my.user Id爲my的模板塊下的變量user的值
#my.user.age Id爲my的模板塊下的變量user的age屬性/字段值
#my.user.location.getcity() Id爲my的模板塊下的變量user的location屬性/字段值的getcity方法返回的值
#.user 當前模板塊下的變量user的值
#.user.age.tostring() 當前模板塊下的變量user的age屬性/字段值的tostring方法返回的值
##.user.location.city 當前模板塊的父級模板塊的變量user的location屬性/字段值的city屬性/字段的值
user.age 文檔(根)模板塊的變量user的age屬性/字段值
weeks.0 文檔(根)模板塊的變量weeks的0索引位置的值
#.users.0.name 當前模板塊下變量users的0索引位置的值的name字段/屬性值

注:變量表達式可在「變量元素」或「標籤元素」的部分屬性值中使用。

六、標籤元素

6.一、<vt:template>模板塊標籤元素

此標籤用於定義模板塊。在VTemplate的模板規範中,變量是基於模板塊存在的,同模板塊下同名的變量都是引用同一個變量實例,但不一樣模板塊中的同名變量都是互相獨立互不影響的。

標籤樣例:

<vt:template id="mytemplate" name="mytemplate">…………………………</vt:template>

或自閉合的樣例:

<vt:template id="filetemplate" file="include/myfile.html" charset="utf-8" />

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
file 模板塊數據文件的路徑地址,能夠絕對或相對地址
charset 模板塊數據文件的編碼,若是未定義則若是存在父級模板塊的話則採用父級模板塊的編碼,不然採用系統默認編碼
render 定義用於處理此模塊數據的實例,能夠爲字符串常量或變量表達式(以$字符開頭),格式:"類實例,程序集"。若是已定義此屬性但未定義rendermethod屬性,則類實例必須已實現ITemplateRender接口。(可不定義)
rendermethod 定義用於處理此模塊數據的類實例的方法,能夠爲字符串常量或變量表達式(以$字符開頭),此方法必須已標記TemplateRenderMethodAttribute特性。(可不定義)

 

6.二、<vt:include>文件包含標籤元素

此標籤用於包含外部文件。

標籤樣例:

<vt:include file="include/myfile.html" charset="utf-8">…………………………</vt:include>

或自閉合的樣例:

<vt:include file="include/myfile.html" charset="utf-8" />

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
file 模板塊數據文件的路徑地址,能夠絕對或相對地址
charset 模板塊數據文件的編碼,若是未定義此屬性則若是存在父級模板塊的話則採用父級模板塊的編碼,不然採用系統默認編碼

 

6.三、<vt:for>循環標籤元素

此標籤用於定義數據循環,相似於程序語言中的for循環。

標籤樣例:

<vt:for from="1" to="9" index="i">…………………………</vt:for>

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
from 循環起始值,可爲一個數值常量(如:1)或變量表達式(必須以$字符開頭,如:$i)
to 循環結束值,可爲一個數值常量(如:1)或變量表達式(必須以$字符開頭,如:$i)
step 循環值的步值,可爲一個數值常量(如:1)或變量表達式(必須以$字符開頭,如:$i),若是未定義此屬性,則默認爲1
index 定義存儲循環索引值的變量標識,注:此索引值是一個LoopIndex實例。(可不定義)

 

 

6.四、<vt:foreach>集合數據循環標籤元素

此標籤用於定義處理集合數據的循環,相似於程序語言中的foreach循環。

標籤樣例:

<vt:foreach from="users" item="user" index="i">…………………………</vt:foreach>

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
from 變量表達式
item 定義存儲當前循環值的變量標識(可不定義)
index 定義存儲循環索引值的變量標識,注:此索引值是一個LoopIndex實例。(可不定義)
groupsize

設置拆分數據集合時的組大小,能夠爲數值常量(如:2)或變量表達式(以$字符開頭)。(可不定義)
若是定義此屬性值,而且值大於1,則模板引擎在解析此foreach標籤時,先將from屬性定義的變量表達式的結果值折分紅一組組集合數據再進行解析。

例如:from的變量表達式的結果值原是「1,2,3,4,5,6」數組集合,若是groupsize設置爲2,則將會拆成"[1,2],[3,4],[5,6]"的數據集合,再用此新的數據集合進行循環解析。

 

6.五、<vt:foreachelse>空集合數據循環標籤元素

此標籤用於定義當集合數據爲空(數量爲0)時顯示處理的節點。此標籤必須在<vt:foreach>標籤中定義,而且此標籤爲單節點標籤(即不須要配對的結束標籤)。

標籤樣例:

<vt:foreach from="users" item="user" index="i">

{$:i}、我叫{$:user.name},今年{$:user.age}歲

<vt:foreachelse />

沒有任何用戶

</vt:foreach>

注:當users集合數據爲空時則顯示"沒有任何用戶"字樣,不然不顯示此字樣。

 

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)

 

6.六、<vt:if>條件判斷標籤元素

此標籤用於定義數據條件判斷,相似於程序語言中的if語句。

標籤樣例:

<vt:if var="user.age" value="20" compare=">">…………………………</vt:if>

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 用於判斷條件的變量表達式
value 用於比較條件的值,可爲數值/字符串常量或變量表達式(必須以$字符開頭,如:$i) 
注:此屬性能夠屢次定義,當var變量表達式中的值和其中一個value屬性值匹配時即符合條件。
compare

比較的方式,能夠爲字符串常量或變量表達式(以$字符開頭),值的定義範圍: 
> : 大於 
>= : 大於等於 
< : 小於 
<= : 小於等於 
!=或<> : 不等於 
= 或== : 相等

^= : 判斷是否以某些值開始(字符比較)

$= : 判斷是否以某些值結束(字符比較)

*= : 判斷是否包含有某些值(字符比較)
若是未定義此屬性則表示採用「相等」比較。

expression 定義須要簡單運算的表達式,能夠爲字符串常量或變量表達式(以$字符開頭),表達式中支持 「{0}」標記,用於代替var屬性的變量表達式的值。(可不定義)

 

6.七、<vt:elseif>條件分支判斷標籤元素

此標籤用於定義數據條件的分支判斷。相似於程序語言中的else if語句。此標籤能夠同時支付一個或多個。此標籤只能在<vt:if>標籤中定義,而且此標籤爲單節點標籤(即不須要配對的結束標籤)。

標籤樣例:

<vt:if var="user.age" value="20">

20歲用戶 
<vt:elseif value="30」 />

30歲用戶

<vt:elseif value="40」 />

40歲用戶

</vt:if>

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 用於判斷條件的變量表達式。若是未定義此屬性,則爲標籤所在的<vt:if>標籤中的var屬性值
value 用於比較條件的值,可爲數值/字符串常量或變量表達式(必須以$字符開頭,如:$i) 
注:此屬性能夠屢次定義,當var變量表達式中的值和其中一個value屬性值匹配時即符合條件。
compare

比較的方式,能夠爲字符串常量或變量表達式(以$字符開頭),值的定義範圍: 
> : 大於 
>= : 大於等於 
< : 小於 
<= : 小於等於 
!=或<> : 不等於 
= 或== : 相等

^= : 判斷是否以某些值開始(字符比較)

$= : 判斷是否以某些值結束(字符比較)

*= : 判斷是否包含有某些值(字符比較)
若是未定義此屬性則表示採用「相等」比較。

expression 定義須要簡單運算的表達式,能夠爲字符串常量或變量表達式(以$字符開頭),表達式中支持 「{0}」標記,用於代替var屬性的變量表達式的值。(可不定義)

 

6.八、<vt:else>條件分支判斷標籤元素

此標籤用於定義數據條件的分支判斷,即當<vt:if>標籤中的全部條件分支都條件不成立時用於顯示處理的節點。相似於程序語言中的else語句。此標籤只能在<vt:if>標籤中定義,而且此標籤爲單節點標籤(即不須要配對的結束標籤)。

標籤樣例:

<vt:if var="user.age" value="20">

20歲用戶 
<vt:elseif value="30」 />

30歲用戶

<vt:else />

未知歲數

</vt:if>

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)

 

6.九、<vt:expression>表達式標籤元素

此標籤用於對變量表達式進行簡單數據運算

標籤樣例:

<vt:expression var="r" args="$i" args="$j" expression="{0}*{1}" />

 

標籤中已定義的屬性列表:

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 存儲表達式運算結果的變量標識
args 參與表達式計算的數值或變量表達式(以$字符開頭)。(可不定義) 
注:此屬性能夠屢次定義,在表達式中分別以{0},{1}表示各個args屬性的變量表達式值
expression 要進行運算的表達式,能夠爲字符串常量或變量表達式(以$字符開頭)。
output 是否在解析標籤時輸出標籤的結果值true/false,若是定義此屬性且值設爲true,則能夠不定義var屬性(即不存儲結果值),默認不輸出標籤結果值。(可不定義) 

 

6.十、<vt:serverdata>服務器數據標籤元素

此標籤用於獲取服務器的部分數據,如Session、Application、DateTime等等

標籤樣例:

<vt:serverdata var="session" type="session" item="username" />

 

標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 存儲服務器數據的變量標識
type

要獲取服務器數據的類型,能夠爲字符串常量或變量表達式(以$字符開頭)。值的定義:

 

類型 說明
Time

獲取服務器時間

item 屬性值可定義爲如下值:

today = 獲取今天的日期(不帶時間部分)

yesterday = 獲取昨天的日期(不帶時間部分)

tomorrow = 獲取明天的日期(不帶時間部分)

其它值 = 獲取服務器如今的時間

Random

獲取一個0---1之間的雙精度隨機數

item 屬性不須要定義

Application

獲取服務器當前上下文的HttpApplicationState對象.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Application集合的鍵值key

Session

獲取服務器當前上下文的HttpSessionState對象.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Session集合的鍵值key

Cache

獲取服務器當前上下文的緩存對象

item 屬性值則爲Cache集合的鍵值key

QueryString

獲取服務器當前上下文的Request.QueryString數據集合.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Request.QueryString集合的鍵值key

Form 獲取服務器當前上下文的Request.Form數據集合.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Request.Form集合的鍵值key

Cookie

獲取服務器當前上下文的Request.Cookie數據集合.若是模板引擎不在Web程序上使用則無效 

item 屬性值則爲Request.Cookie集合的鍵值key,若是item值包含「.」號,則表示屬於某個Cookie下的某個Value值,例如:

item="user"則表示是Request.Cookie["user"]值;
item="user.name"則表示是Requst.Cookie["user"]["name"]值

ServerVariables 獲取服務器當前上下文的Request.ServerVariables數據集合.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Request.ServerVariables集合的鍵值key

RequestParams 獲取服務器當前上下文的Request.Params數據集合.若是模板引擎不在Web程序上使用則無效

item 屬性值則爲Request.Params集合的鍵值key

Request 獲取服務器當前上下文的HttpRequest對象.若是模板引擎不在Web程序上使用則無效

item 屬性不須要定義

Environment 獲取服務器系統平臺的環境參數

item 屬性不須要定義

AppSetting 獲取當前應用程序配置文件裏的AppSettings配置參數

item 屬性值則爲ConfigurationManager.AppSettings集合的鍵值key

 

item 要獲取的數據項,此屬性值根據type值而具備不一樣的意義,具體的看上表,能夠爲字符串常量或變量表達式(以$字符開頭)。
output 是否在解析標籤時輸出標籤的結果值true/false,若是定義此屬性且值設爲true,則能夠不定義var屬性(即不存儲結果值),默認不輸出標籤結果值。(可不定義)

 

  

6.十一、<vt:datareader>數據讀取標籤元素

此標籤用於直接從數據源讀取數據
注意:此標籤必須採用TagOpenMode=Full的TemplateDocumentConfig時才容許使用。

標籤樣例:

<vt:datareader var="members" connection="memberdb" commandtext="select * from [member]" />

  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 存儲返回數據的變量標識
connection

數據源名稱.此名稱必須已在項目配置文件(如:web.config)裏的connectionStrings節點裏定義,能夠爲字符串常量或變量表達式(以$字符開頭).

commandtext 數據查詢語句(SQL語句) ,能夠爲字符串常量或變量表達式(以$字符開頭)
commandtype

數據查詢語句的類型。值範圍對應於System.Data.CommandType枚舉,能夠爲字符串常量(如:Text)或變量表達式(以$字符開頭)。(可不定義)

注:當未定義時默認爲CommandType.CommandText值

rowindex 要獲取行的行號,能夠爲數值常量(如:1)或變量表達式(以$字符開頭)(可不定義)
注:當此值不定義時將返回一個表結構(DataTable),而若是定義此值,則將返回對應行的數據行(DataRow),若是行不存在則返回null
parameters

數據查詢語句中的附加參數的數值/字符串常量或變量表達式(以$字符開頭)(可不定義)
注:此屬性能夠屢次定義,在數據查詢語句中分別以@p0,@p1表示各個parameters屬性的變量表達式值

例子:
<vt:datareader var="members" connection="db" commandtext="select * from [member] where id>=@p0 and sex=@p1" parameters="id" parameters="sex" />

ParameterFormat

數據查詢參數的格式,能夠爲字符串常量或變量表達式(以$字符開頭),默認爲"@p{0}",其中"{0}"是佔位符,表示各查詢參數的索引數字(也便是parameters屬性的前後順序)。(可不定義)

注:若是定義此屬性則commandtext裏的語句也必須相應更改。

例子:
<vt:datareader var="members" connection="db" commandtext="select * from [member] where id>=&par0 and sex=&par1" parameters="id" parameters="sex" parameterformat="&par{0}" />

 

 

 

 

6.十二、<vt:function>函數調用標籤元素

此標籤用於直接調用函數標籤樣例:

<vt:function var="days" method="DaysInMonth" type="System.DateTime" args="2009" args="10" />
<vt:function var="UTCTime" method="ToUniversalTime" type="$time" />

  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 存儲函數返回值的變量標識
method

函數方法名,能夠爲字符串常量或變量表達式(以$字符開頭)

type 包含靜態函數方法的類型或包含函數方法的類型,能夠爲字符串常量或變量表達式(必須以$字符開頭,如:$i) (可不定義)
注:當未定義此屬性時,將從模板塊裏獲取註冊的「用戶自定義函數」,函數的原型參考UserDefinedFunction委託
args

參與函數運算的參數,可爲數值/字符串常量或變量表達式(必須以$字符開頭,如:$i) (可不定義)
注:此屬性能夠屢次定義,但其定義順序必須與函數方法的參數順序一致。

output 是否在解析標籤時輸出標籤的結果值true/false,若是定義此屬性且值設爲true,則能夠不定義var屬性(即不存儲結果值),默認不輸出標籤結果值。(可不定義)

 

 

6.1三、<vt:property>獲取字段或屬性值標籤元素

此標籤用於直接獲取字段或屬性值標籤樣例:

<vt:property var="time" field="Now" type="System.DateTime" />
<vt:property var="year" field="Year" type="$time" />

  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 存儲字段或屬性值的變量標識
field

字段或屬性名,能夠爲字符串常量或變量表達式(以$字符開頭).

type 包含靜態字段或屬性的類型或包含字段或屬性的類型,能夠爲字符串常量或變量表達式(必須以$字符開頭,如:$i)
output 是否在解析標籤時輸出標籤的結果值true/false,若是定義此屬性且值設爲true,則能夠不定義var屬性(即不存儲結果值),默認不輸出標籤結果值。(可不定義)

 

 

6.1四、<vt:set>變量賦值標籤元素

此標籤用於向模板變量賦值標籤樣例:

<vt:set var="time" value="2009-08-09" />
<vt:set var="time" value="$year" value="$month" value="$day" format="{0}-{1}-{2}/>

  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 須要賦值的變量標識
value

要賦於變量的值,可爲數值/字符串常量或變量表達式(必須以$字符開頭,如:$i)
注:此屬性能夠屢次定義,但若是屢次定義則必須定義format屬性。

format 用於格式化變量值的格式,能夠爲字符串常量或變量表達式(以$字符開頭)。(可不定義)
注:在格式表達式中分別以{0},{1}表示各個value屬性的變量值
output 是否在解析標籤時輸出標籤的結果值true/false,若是定義此屬性且值設爲true,則能夠不定義var屬性(即不存儲結果值),默認不輸出標籤結果值。(可不定義)

 

 

6.1五、<vt:output>數據輸出標籤元素

此標籤可輸出某個標籤或文件的數據標籤樣例:

<vt:output tagid="user" />
<vt:output file="output.html" charset="gb2312/>

  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
tagid 須要輸出數據的其它標籤元素Id,能夠爲字符串常量或變量表達式(以$字符開頭)。(可不定義)
注:若是未定義此屬性則須要定義file屬性
file

須要輸出數據的文件,能夠爲絕對路徑或相對路徑,能夠爲字符串常量或變量表達式(以$字符開頭)。(可不定義)

注:若是未定義此屬性則須要定義tagid屬性

charset 讀取文件時使用的編碼,能夠爲字符串常量或變量表達式(以$字符開頭)。(可不定義)

 

 

 

6.1六、<vt:import>類型導入標籤元素

此標籤可導入某個類型。標籤樣例:

<vt:import var="math" type="System.Math" />

<vt:import var="utils" type="Kingthy.Utils" assembly="c:\dll\kingthy.utils.dll"  />
  
標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。(可不定義)
name 標籤元素的名稱。(可不定義)
var 用於保存類型的變量標識
type

須要導入的類型,能夠爲字符串常量或變量表達式(以$字符開頭)

assembly 須要導入的類型所在的程序集,能夠爲字符串常量或變量表達式(以$字符開頭),值能夠定義爲某個程序集文件或程序集名稱。(可不定義)

 

 

 

 

 

 

6.1七、<vt:panel>數據面板標籤元素

此標籤可方便用於實現「母版頁」(MasterPage)的功能。標籤樣例:

定義容器面板:

<vt:panel id="header" />

 

定義內容數據面板,此內容標籤裏的數據將在對應的容器面板裏輸出。

<vt:panel container="header">

這是頭部內容

</vt:panel >

 

上面定義的標籤的數據將會在id="header"裏的panel標籤裏輸出。

標籤中已定義的屬性列表:

 

名稱 說明
id 標籤元素的Id,建議惟一但不強制。若是定義了此id則表示此面板標籤能夠作爲一個容器面板使用(可不定義)
name 標籤元素的名稱。(可不定義)
container 定義輸出容器面板的id。若是定義此屬性則表示此面板數據只在容器面板裏輸出。(可不定義)

 

注意:此標籤必須定義id或者container之一屬性,或者全都定義

 

 

 

 

七、變量元素

變量元素主要用於輸出變量表達式的值。其定義格式爲:

{$:變量表達式 屬性="屬性值"}

或3.7版本以上能夠這樣定義(建議)

 {$變量表達式 屬性="屬性值"}

 

例子:

{$:i}、{$:user.age format=」00」}、{$:user.name length=」20」 htmlencode=」true」}

{$:#my.i}、{$:##.user.age}、{$:#my.user.location.getcity() htmlencode=」true」}

 

元素中已定義的屬性列表:

名稱 說明
htmlencode 輸出變量表達式的值時是否須要進行HTML字符編碼。true/false,默認爲false(可不定義)
urlencode 輸出變量表達式的值時是否須要進行URL字符編碼。true/false,默認爲false(可不定義)
xmlencode 輸出變量表達式的值時是否須要進行XML字符編碼。true/false,默認爲false(可不定義)
textencode 輸出變量表達式的值時是否須要進行文本字符編碼(先進行HTML字符編碼,再將「空格」轉換爲"&nbsp;」;「回車換行」轉換爲"<br />」字符)。true/false,默認爲false(可不定義)
jsencode 輸出變量表達式的值時是否須要進行Javascript腳本字符編碼。true/false,默認爲false(可不定義)
format 用於格式化變量表達式的值的格式(若是變量表達的值已實現IFormattable接口則調用接口方法,不然調用String.Format方法)。(可不定義)
length 輸出變量表達的值時的最大長度。若是值的字符長度超出此定義的值,則將進行字符截取。默認爲0不截取(可不定義)
charset 定義在進行urlencode或length截取字符時採用的編碼。默認爲所在模板塊的charset(可不定義)
appendtext

定義文本在輸出時若是被裁剪後要附加顯示的文本。(可不定義) 
注: 此屬性必須和length屬性配合使用。

removehtml 定義在數據輸出時是否將數據裏的HTML字符刪除。(可不定義)
call 在輸出變量表達式的值前須要調用的函數名稱。(可不定義) 
注:此屬性能夠屢次定義,模板引擎將根據定義順序前後調用函數。函數的原型參考UserDefinedFunction委託

 

八、註釋標籤:

     注:註釋標籤只在2.1以上版本有效

     格式:<!--vt[註釋文字]-->

     註釋標籤在解析輸出時不會被輸出顯示,而且註釋裏面能夠書寫任何的標籤元素,都不會被VTemplate模板引擎解析。

     例子:

     <!--vt[這是VT的註釋代碼,下面的標籤不會被解析到<vt:serverdata type="time" output="true" />。]-->

 

九、項目託管: 
VTemplate項目託管在Google code上。 
URL: http://net-vtemplate.googlecode.com/ 
SVN: http://net-vtemplate.googlecode.com/svn/src/VTemplate.Engine/

 例子請參考VTemplate.WebTester項目

 http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester/

 

注:已創建VTemplate模板引擎技術交流QQ羣,歡迎各位加入參與項目開發或技術探討。QQ羣:884468

相關文章
相關標籤/搜索