日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)vtemplate

發布時間:2024/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)vtemplate 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉載自:http://www.cnblogs.com/wfnice12/archive/2009/11/03/1594922.html

1、什么是VTemplate?

VTemplate是一個免費的開源(采用LGPL開源許可協議)模板引擎,用于解析運行VT模板; 其主要目標是為ASP.Net開發提供另外一種技術選擇方案,以保證用簡單的語法,良好的結構,不混雜業務邏輯的方式書寫頁面; 適合于充當Model-View-Controller(MVC)模式應用的View角色,以使能更好的分離頁面設計人員與業務開發人員的職責; 也可以作為動態文本生成工具,生成HTML、XML、Mail、程序源代碼或其它文本等。

?

2、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);

?

?

3、什么是VT模版元素?

VT模版元素VTemplate模版引擎定義的有特殊作用的模版語言元素,分為標簽元素變量元素

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

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

4、變量與變量表達式

4.1、變量是VTemplate模版引擎中的核心元素,用于存儲或控制數據的輸出,其類似于程序語言中的“變量”概念,定義格式也是一樣。如上例中的i,j,r變量。

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

定義格式為:“前綴.變量.變量字段/屬性/函數方法/索引值”。

前綴:以#號開頭后跟模版塊的Id值,用于指示此變量是取自于對應Id的模版塊下的變量,如#my.user則表示user變量是取自于Id為my的模版塊下的變量;如果省略Id號,即前綴只為#號,則表示是當前模版塊下的變量;而如果前綴是“##”,則表示是當前模版塊的父模版塊(如果不存在父級模版塊則為當前模版塊)下的變量;如果省略前綴,則表示是文檔(根)模版塊的變量。

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

例子:

#my.userId為my的模版塊下的變量user的值
#my.user.ageId為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字段/屬性值

注:變量表達式可在“變量元素”或“標簽元素”的部分屬性值中使用。

5、標簽元素

5.1、<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特性。(可不定義)

?

5.2、<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模版塊數據文件的編碼,如果未定義此屬性則如果存在父級模版塊的話則采用父級模版塊的編碼,否則采用系統默認編碼

?

5.3、<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實例。(可不定義)

?

?

5.4、<vt:foreach>集合數據循環標簽元素

此標簽用于定義處理集合數據的循環,類似于程序語言中的foreach循環。

標簽樣例:

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

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

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

設置拆分數據集合時的組大小。(可不定義)
如果定義此屬性值,并且值大于1,則模版引擎在解析此foreach標簽時,先將from屬性定義的變量表達式的結果值折分成一組組集合數據再進行解析。

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

?

5.5、<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標簽元素的名稱。(可不定義)

?

5.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屬性的變量表達式的值。(可不定義)

?

5.7、<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屬性的變量表達式的值。(可不定義)

?

5.8、<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標簽元素的名稱。(可不定義)

?

5.9、<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屬性(即不存儲結果值),默認不輸出標簽結果值。(可不定義)

?

5.10、<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 屬性不需要定義

?

item要獲取的數據項,此屬性值根據type值而具有不同的意義,具體的看上表。
output是否在解析標簽時輸出標簽的結果值true/false,如果定義此屬性且值設為true,則可以不定義var屬性(即不存儲結果值),默認不輸出標簽結果值。(可不定義)

?

??

5.11、<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語句)?
rowindex要獲取行的行號(可不定義)
注:當此值不定義時將返回一個表結構(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" />

?

?

?

5.12、<vt:function>函數調用標簽元素

此標簽用于直接調用函數。標簽樣例:

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

??
標簽中已定義的屬性列表:

?

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

函數方法名.

type包含靜態函數方法的類型或包含函數方法的變量表達式(必須以$字符開頭,如:$i)
args

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

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

?

?

5.13、<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屬性(即不存儲結果值),默認不輸出標簽結果值。(可不定義)

?

?

5.14、<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、變量元素

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

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

例子:

{$: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屬性配合使用。

call在輸出變量表達式的值前需要調用的函數名稱。(可不定義)
注:此屬性可以多次定義,模版引擎將根據定義順序先后調用函數。函數的原型參考VariableFunction委托

?

7、注釋標簽:

???? 注:注釋標簽只在2.1以上版本有效

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

???? 注釋標簽在解析輸出時不會被輸出顯示,并且注釋里面可以書寫任何的標簽元素,都不會被VTemplate模版引擎解析。

???? 例子:

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

?

8、項目托管
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/

或觀看在線演示例子:(感謝網友“DOLT” 提供

http://222.76.217.250:8888/index.ashx

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

?

?

2、VTemplate模板的特色:

?

2.1、VT是一種解釋型的模板引擎,所以你可以隨時更改你的模板代碼以獲得不同的輸出,而不需要重新編譯程序代碼
2.2、VT支持緩存,也就是模板只需要解析一次,下次就可以直接從內存里構建您的模板對象而不需要再次解析模板代碼,除非相關的模板文件已被修改。
2.3、VT的模板標簽語法是基于HTML規范定義的元素,所以對頁面設計人員來說是非常友好的。
2.4、VT模板支持循環、條件判斷、數值表達式計算等,以方便你在模板里直接進行邏輯處理。

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

上面模板里第一種采用function標簽調用user對象的GetData方法,第二種則直接采用變量表達式執行方法。


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

上面的變量元素里,user可以為

public class user{
?public string name;
}

也可以為
public class user{
?public string name{get;set;}
}

也可以為
var user = new Dictionary<string, string>();
user.Add("name","張三");


VT會自動判斷user對象的name是存在于對象的字段、屬性還是集合項里。

程序傳入對象引用看這里:

?

<vt:foreach from=”$blogarchive.comments” item=”#.comment” index=”#.floor”><hr class=”blogsplit”/> <div class=”blogcomment”>#{$:#.floor}樓 {$:#.comment.time format=”yyyy-MM-dd HH:mm”} | {$:#.comment.author htmlencode=”true”} </div><div style="padding-left: 20px">{$:#.comment.content htmlencode=”true”}</div></vt:foreach>

利用我們上面設計好的VT模板,我們實例化VTemplate模板引擎的里的模板文檔對象TemplateDocument。

假如我們的VT模板保存在blogarchive.html文件里,則實例化代碼如下:

TemplateDocument document = new TemplateDocument(context.Server.MapPath("template/blogarchive.html"), Encoding.UTF8);

或者我們從緩存模板里構造實例:

TemplateDocument document = TemplateDocument.FromFileCache(context.Server.MapPath("template/blogarchive.html"), Encoding.UTF8);

到此,我們就可以使用document對象來操作VT模板變量里的元素對象了,比如對VT模板里紅色的blogarchive變量賦于某篇博客日記數據,如下:

//對VT模板里的blogarchive變量賦值 document.Variables.SetValue("blogarchive", this.GetBlogArchive()); 注:對于GetBlogArchive()方法,則只是一個獲取數據實體的函數,比如從數據庫獲取的數據實體。

?

經過這簡單的兩步操作,我們就已完成了對VT模板的操作,剩下就是“告訴”模板引擎將數據呈現出來,我們的博客日記頁面就做好了;)是不是很簡單?

//輸出最終呈現的數據 document.Render(context.Response.Output);

?

總結

以上是生活随笔為你收集整理的(转)vtemplate的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天操精品| tube国产麻豆 | 日韩激情在线播放 | 在线观看天堂av | 伊人免费在线 | 国产精品调教视频 | 天天视频入口 | 91色在线播放 | 国产又爽又色 | 四虎成人永久免费视频 | 香蕉久草 | h小视频在线观看 | 国产日本欧美在线观看 | 欧美一级专区 | 精品久久精品久久 | 精品免费视频 | 噜啪啪| 人成免费 | 国产亚洲一区二区三区不卡 | 黄色免费网| 99热综合| 搞逼综合网 | 精品欧美一区二区精品少妇 | 尤物视频官网 | 欧美性在线视频 | 国产伦精品一区二区三 | 精品韩国一区二区三区 | 欧美日韩99 | 影音先锋欧美资源 | 久久免费一级片 | 国内免费av| 久久欧美视频 | 青青操国产| 深夜福利在线免费观看 | www.香蕉网| 欧美韩日 | 国产日韩成人内射视频 | 99免费观看| 国产高清二区 | 欧美人与物videos另类 | 欧美精品在欧美一区二区少妇 | av在线免费网站 | 日韩精品免费在线视频 | 三级第一页 | 欧美性生活一区 | 日韩av片在线免费观看 | 国产女人18毛片水真多18 | www.在线| 亚洲精品视频91 | 天天想夜夜操 | 精品人妻一区二区三 | 国产av自拍一区 | 992tv在线成人免费观看 | 亚洲欧美日韩国产精品 | 污污软件在线观看 | 国产黄色一级网站 | 免费精品一区二区 | www.超碰在线 | 日韩色综合网 | 丰满人妻一区二区三区在线 | 色在线影院 | 色综合五月 | 国产午夜精品一区二区三区欧美 | 91视频播放器 | 播放黄色一级片 | 国产精品一区二区三 | 51福利视频| av不卡在线观看 | 亚洲成人精品 | 在线观看中文字幕视频 | jizz日韩| 伊人久久大香线蕉av一区 | 久久高清av | 欧美操穴视频 | 国产精品91久久久 | 国产精品久久伊人 | 影音先锋亚洲资源 | 五月天久久久 | 久草成人 | 一区二区三区资源 | 欧洲一级黄色片 | 麻豆婷婷| 在线国产视频 | 美女精品视频 | 国产精成人品免费观看 | 久久久久91 | 亚洲美女综合 | 尤物精品在线观看 | 调教91 | 亚洲图片欧美在线看 | 国产在线精品成人欧美 | 欧日韩一区二区三区 | 久久久91精品国产一区二区三区 | 亚洲清纯国产 | 成人三级图片 | 亚洲AV午夜精品 | 大陆农村乡下av | 色丁香六月 | wwwxxx欧美|