vt标签语法

更新时间:2023-11-07 14:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

vt博客地址:http://www.cnblogs.com/kingthy 1、什么是VTemplate?

VTemplate是一个免费的开源(采用LGPL开源许可协议)模板引擎,用于解析运行VT模板; 其主要目标是为ASP.Net开发提供另外一种技术选择方案,以保证用简单的语法,良好的结构,不混杂业务逻辑的方式书写页面; 适合于充当Model-View-Controller(MVC)模式应用的View角色,以使能更好的分离页面设计人员与业务开发人员的职责; 也可以作为动态文本生成工具,生成HTML、XML、Mail、程序源代码或其它文本等。

TT2、VTemplate模板范例:

test1

/>{$:i}*{$:j}={$:r}     (var定义的变量存储计算表达式的值,args->参数,由expression来计算表达式。{$:r}->在页面中显示r变量的值)

以上模板代码经过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(\), Encoding.UTF8); document.Render(Response.Output);

*参考(template/fortag_test.html、fortag_test.ashx) 3、什么是VT模板元素?

VT模板元素VTemplate模板引擎定义的有特殊作用的模板语言元素,分为标签元素和变量元素。

3.1、标签元素都是程序逻辑控制元素,是标准的HTML标签元素,如上例中用于循环处理的标签和用于计算表达式值的标签等

3.2、变量元素是数据输出元素,其格式是以“{$:”字符开头,以“}”字符结束。 如上例中的{$:i}、{$:j}和{$:r}等 4、变量、变量标识、变量表达式

4.1、变量是VTemplate模板引擎中的核心元素,用于存储或控制数据的输出,其类似于程序语言中的“变量”概念,定义格式也是一样。如上例中的i,j,r变量。

TT 4.2、变量标识由两部分组成:变量前缀与变量(名)。其中“变量前缀”可以省略,如“#.i”,“#u.i”,“u“

变量前缀:以#号开头后跟模板块的Id值,用于指示此变量是取自于对应Id的模板块下的变量,如#my.user则表示user变量是取自于Id为my的模板块下的变量;如果省略Id 号,即前缀只为#号,则表示是当前模板块下的变量;而如果前缀是“##”,则表示是当前模板块的父模板块(如果不存在父级模板块则为当前模板块)下的变量;如果省略前缀,则表示是文档(根)模板块的变量。

*参考(template/varexp_test.html、varexp_test.ashx)

TT 4.3、变量表达式则是定义获取变量中某个字段、属性或函数方法结果值。 定义格式为:“变量标识.变量字段/属性/函数方法/索引值”。

变量字段/属性/函数方法/索引值:表示要从变量中取得数据的字段/属性/函数方法/索引值(数字),其中函数方法只支持不带参数的方法。此段可以定义0次或多次。 例子:

#my.user #my.user.age

#my.user.location.getcity() #.user

#.user.age.tostring() ##.user.location.city user.age weeks.0 #.users.0.name

Id为my的模板块下的变量user的值

Id为my的模板块下的变量user的age属性/字段值

Id为my的模板块下的变量user的location属性/字段值的getcity方法返当前模板块下的变量user的值

当前模板块下的变量user的age属性/字段值的tostring方法返回的值

当前模板块的父级模板块的变量user的location属性/字段值的city属性/文档(根)模板块的变量user的age属性/字段值 文档(根)模板块的变量weeks的0索引位置的值

当前模板块下变量users的0索引位置的值的name字段/属性值

注:变量表达式可在“变量元素”或“标签元素”的部分属性值中使用。 *参考(template/varexp_test.html、varexp_test.ashx) 5、标签元素:

TT 5.1、模板块标签元素

此标签用于定义模板块。在VTemplate的模板规范中,变量是基于模板块存在的,同模板块下同名的变量都是引用同一个变量实例,但不同模板块中的同名变量都是互相独立互不影响的。

标签样例:

name=\vt:template> 或自闭合的样例:

名称 id name file charset render

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义)

模板块数据文件的路径地址,可以绝对或相对地址

模板块数据文件的编码,如果未定义则如果存在父级模板块的话则采用父级模板块的编码,

定义用于处理此模块数据的实例,可以为字符串常量或变量表达式(以$字符开头),格式:定义rendermethod属性,则类实例必须已实现ITemplateRender接口。(可不定义)

rendermethod 定义用于处理此模块数据的类实例的方法,可以为字符串常量或变量表达式(以$字符开头TemplateRenderMethodAttribute特性。(可不定义)

*参考(template/varexp_test.html、varexp_test.ashx) TT 5.2、文件包含标签元素 此标签用于包含外部文件。 标签样例:

charset=\8\vt:include> 或自闭合的样例:

名称 id

说明

标签元素的Id,建议唯一但不强制。(可不定义)

name file charset

标签元素的名称。(可不定义)

模板块数据文件的路径地址,可以绝对或相对地址

模板块数据文件的编码,如果未定义此属性则如果存在父级模板块的话则采用父级模板块的

*参考(template/ template_include_test.html、template_include_test.ashx) 5.3、循环标签元素

此标签用于定义数据循环,类似于程序语言中的for循环。 标签样例:

标签中已定义的属性列表:

名称 id name from to step index

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义)

循环起始值,可为一个数值常量(如:1)或变量表达式(必须以$字符开头,如:$i) 循环结束值,可为一个数值常量(如:1)或变量表达式(必须以$字符开头,如:$i)

循环值的步值,可为一个数值常量(如:1)或变量表达式(必须以$字符开头,如:$i),如果定义存储循环索引值的变量标识,注:此索引值是一个LoopIndex实例。(可不定义)

*参考(template/ fortag_test.html、fortag_test.ashx) TT 5.4、集合数据循环标签元素

此标签用于定义处理集合数据的循环,类似于程序语言中的foreach循环。 标签样例:

标签中已定义的属性列表:

名称 id name

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义)

Application 获取服务器当前上下文的HttpApplicationState对象.如果模板引擎item 属性值则为Application集合的键值key

Session 获取服务器当前上下文的HttpSessionState对象.如果模板引擎不在Cache QueryString Form Cookie ServerVariables

RequestParams Request Environment AppSetting item 属性值则为Session集合的键值key

获取服务器当前上下文的缓存对象 item 属性值则为Cache集合的键值key

获取服务器当前上下文的Request.QueryString数据集合.如果模板item 属性值则为Request.QueryString集合的键值key

获取服务器当前上下文的Request.Form数据集合.如果模板引擎不item 属性值则为Request.Form集合的键值key

获取服务器当前上下文的Request.Cookie数据集合.如果模板引擎不

item 属性值则为Request.Cookie集合的键值key,如果item值包的某个Value值,例如:

item=\则表示是Request.Cookie[\值;

item=\则表示是Requst.Cookie[\值

获取服务器当前上下文的Request.ServerVariables数据集合.如果item 属性值则为Request.ServerVariables集合的键值key

获取服务器当前上下文的Request.Params数据集合.如果模板引擎item 属性值则为Request.Params集合的键值key

获取服务器当前上下文的HttpRequest对象.如果模板引擎不在Weitem 属性不需要定义

获取服务器系统平台的环境参数 item 属性不需要定义

获取当前应用程序配置文件里的AppSettings配置参数

item 属性值则为ConfigurationManager.AppSettings集合的键值

item output

要获取的数据项,此属性值根据type值而具有不同的意义,具体的看上表,可以为字符串常

是否在解析标签时输出标签的结果值true/false,如果定义此属性且值设为true,则可以不不输出标签结果值。(可不定义)

*参考(serverdatatag_test.html、serverdatatag_test.ashx) TT 5.11、数据读取标签元素 此标签用于直接从数据源读取数据。

注意:此标签必须采用TagOpenMode=Full的TemplateDocumentConfig时才允许使用。 标签样例:

标签中已定义的属性列表:

名称 id name var connection

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义) 存储返回数据的变量标识

数据源名称.此名称必须已在项目配置文件(如:web.config)里的connectionStrings节点里(以$字符开头).

commandtext commandtype

数据查询语句(SQL语句) ,可以为字符串常量或变量表达式(以$字符开头)

数据查询语句的类型。值范围对应于System.Data.CommandType枚举,可以为字符串常头)。(可不定义)

注:当未定义时默认为CommandType.CommandText值

rowindex 要获取行的行号,可以为数值常量(如:1)或变量表达式(以$字符开头)(可不定义)

注:当此值不定义时将返回一个表结构(DataTable),而如果定义此值,则将返回对应行的数null

parameters 数据查询语句中的附加参数的数值/字符串常量或变量表达式(以$字符开头)(可不定义)

注:此属性可以多次定义,在数据查询语句中分别以@p0,@p1表示各个parameters属性例子:

ParameterFormat

数据查询参数的格式,可以为字符串常量或变量表达式(以$字符开头),默认为\其引数字(也即是parameters属性的先后顺序)。(可不定义) 注:如果定义此属性则commandtext里的语句也必须相应更改。 例子:

sex=&par1\

*参考(datareadertag_test.html、datareadertag_test.ashx) TT 5.12、函数调用标签元素 此标签用于直接调用函数。标签样例:

标签中已定义的属性列表:

名称 id name var method type

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义) 存储函数返回值的变量标识

函数方法名,可以为字符串常量或变量表达式(以$字符开头)

包含静态函数方法的类型或包含函数方法的类型,可以为字符串常量或变量表达式(必须以

注:当未定义此属性时,将从模板块里获取注册的“用户自定义函数”,函数的原型参考Use

args 参与函数运算的参数,可为数值/字符串常量或变量表达式(必须以$字符开头,如:$i) (可注:此属性可以多次定义,但其定义顺序必须与函数方法的参数顺序一致。

output 是否在解析标签时输出标签的结果值true/false,如果定义此属性且值设为true,则可以不不输出标签结果值。(可不定义)

*参考(functiontag_test.html、functiontag_test.ashx) TT 5.13、获取字段或属性值标签元素 此标签用于直接获取字段或属性值。标签样例:

名称 id name var field type output

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义) 存储字段或属性值的变量标识

字段或属性名,可以为字符串常量或变量表达式(以$字符开头).

包含静态字段或属性的类型或包含字段或属性的类型,可以为字符串常量或变量表达式(必

是否在解析标签时输出标签的结果值true/false,如果定义此属性且值设为true,则可以不不输出标签结果值。(可不定义)

*参考(propertytag_test.html、propertytag_test.ashx) TT 5.14、变量赋值标签元素 此标签用于向模板变量赋值。标签样例:

//注册一个自定义函数

//this.Document.RegisterGlobalFunction(this.GetUserProfile); public object GetUserProfile() {}

标签中已定义的属性列表:

名称 id name var value

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义) 需要赋值的变量标识

要赋于变量的值,可为数值/字符串常量或变量表达式(必须以$字符开头,如:$i) 注:此属性可以多次定义,但如果多次定义则必须定义format属性。

format

用于格式化变量值的格式,可以为字符串常量或变量表达式(以$字符开头)。(可不定义) 注:在格式表达式中分别以{0},{1}表示各个value属性的变量值

output

是否在解析标签时输出标签的结果值true/false,如果定义此属性且值设为true,则可以不不输出标签结果值。(可不定义)

*参考(settag_test.html、settag_test.ashx) 5.15、数据输出标签元素 此标签可输出某个标签或文件的数据。标签样例:

标签中已定义的属性列表:

名称 id name tagid

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义)

需要输出数据的其它标签元素Id,可以为字符串常量或变量表达式(以$字符开头)。(可不定注:如果未定义此属性则需要定义file属性

file 需要输出数据的文件,可以为绝对路径或相对路径,可以为字符串常量或变量表达式(以$字

注:如果未定义此属性则需要定义tagid属性

charset

读取文件时使用的编码,可以为字符串常量或变量表达式(以$字符开头)。(可不定义)

*参考(outputtag_test.html、outputtag_test.ashx) TT 5.16、类型导入标签元素 此标签可导入某个类型。标签样例:

标签中已定义的属性列表:

名称 id name var type assembly

说明

标签元素的Id,建议唯一但不强制。(可不定义) 标签元素的名称。(可不定义) 用于保存类型的变量标识

需要导入的类型,可以为字符串常量或变量表达式(以$字符开头)

需要导入的类型所在的程序集,可以为字符串常量或变量表达式(以$字符开头),值可以定义定义)

*参考(importtag_test.html、importtag_test.ashx) 6、变量元素

变量元素主要用于输出变量表达式的值。其定义格式为: {$:变量表达式 属性=\属性值\例子:

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

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

元素中已定义的属性列表:

名称 htmlencode urlencode xmlencode textencode

说明

输出变量表达式的值时是否需要进行HTML字符编码。true/false,默认为false(可不定义

输出变量表达式的值时是否需要进行URL字符编码。true/false,默认为false(可不定义) 输出变量表达式的值时是否需要进行XML字符编码。true/false,默认为false(可不定义)

输出变量表达式的值时是否需要进行文本字符编码(先进行HTML字符编码,再将“空格”转换字符)。true/false,默认为false(可不定义)

jsencode format

输出变量表达式的值时是否需要进行Javascript脚本字符编码。true/false,默认为false

用于格式化变量表达式的值的格式(如果变量表达的值已实现IFormattable接口则调用接口(可不定义)

length charset appendtext

输出变量表达的值时的最大长度。如果值的字符长度超出此定义的值,则将进行字符截取。

定义在进行urlencode或length截取字符时采用的编码。默认为所在模板块的charset(可定义文本在输出时如果被裁剪后要附加显示的文本。(可不定义) 注: 此属性必须和length属性配合使用。

removehtml call

定义在数据输出时是否将数据里的HTML字符删除。(可不定义) 在输出变量表达式的值前需要调用的函数名称。(可不定义)

注:此属性可以多次定义,模板引擎将根据定义顺序先后调用函数。函数的原型参考UserD

7、注释标签:

注:注释标签只在2.1以上版本有效 格式:

注释标签在解析输出时不会被输出显示,并且注释里面可以书写任何的标签元素,都不会被VTemplate模板引擎解析。 例子:

*参考(template/ templatecomment_test.html、templatecomment_test.ashx)

通用问题解决办法

1. 如果在页面需要定义一个变量显示变量值,用{$:myvar},通过

document.Variables.SetValue(“myvar”,object); 2. function和foreach的配合使用

title=\

本文来源:https://www.bwwdw.com/article/hs62.html

Top