网鸟Asp.Net模板引擎常用语法介绍

网鸟Asp.Net模板引擎 Version 2.2.1016.35 可以直接将html格式的模板代码转换为.aspx格式文件,大大的提高了执行效率,它的主要功能列举如下,更多的特性还有待您在实践的过程中挖掘。

网鸟Asp.Net模板引擎 Version 2.2.1016.35 采用了<prefix:foreach>形式的标记语言作为模板语句,相对于其他形式来说,这可以在一些开发工具(如Dreamweav)中实现代码高亮和代码提示,代码可读性也更加友好,最终生成的.aspx文件中的代码格式也很清秀,具有很强的可读性,便于开发者的管理和维护。

网鸟Asp.Net模板引擎 Version 2.2.1016.35 内置支持的模板流程控制语句如下,除了注释语句和单行语句之外,其他语句都允许嵌套。

名称 示例 备注
include <!--#include file="_Page_Header.shtml" --> 实现SSI机制,用于导入要包含的文件,语法同shtml规范一致。
break <mte:break /> 实现C#中的break语句
continue <mte:continue /> 实现C#中的continue语句
do...while <mte:do>
     //...
</mte:do while="true">
实现C#中的do...while语句
foreach <mte:foreach expression="char c in name">
     //...
</mte:foreach>
实现C#中的foreach语句
for <mte:for expression="int i = 0; i < 10; i++">
     //...
</mte:for>
实现C#中的for语句
goto <mte:continue label="label1" />
<mte:continue case="1" />
实现C#中的goto label语句
实现C#中在switch中使用的 goto case语句
if-elseif-else <mte:if expression="x == 1">
     //...
<mte:elseif expression="x == 2" />
     //...
<mte:else />
     //...
</mte:if>
实现C#中的if语句
lock <mte:lock expression="_ObjectAsync">
     //...
</mte:lock>
实现C#中的lock语句
return <mte:return />
<mte:return expression="1" />
实现C#中的不带返回值的return语句
实现C#中的带返回值的return语句
switch <mte:switch expression="i">
<mte:case expression="1">
     //...
<mte:break />
</mte:case>
<mte:case expression="2">
<mte:continue case="1" />
</mte:case>
<mte:default>
     //...
<mte:break />
</mte:default>
</mte:switch>
实现C#中的switch语句
throw <mte:throw expression="e.Error" />
实现C#中的throw语句
try <mte:try>
     //...
</mte:try>
<mte:catch expression="Exception ex">
     //...
</mte:catch>
<mte:finally>
     //...
</mte:finally>
实现C#中的try语句,其中catch子句中的
expression属性是可省略的。
using <mte:using expression="_FileStream">
     //...
</mte:using>
实现C#中的using语句
var <mte:var expression="int index = 0;" />
这是一个单句万能标记,可以在expression中
写任何合法的C#代码
while <mte:while expression="true">
     //...
</mte:while>
实现C#中的while语句
comment <mte:comment>
     //...
</mte:comment>
实现C#中的注释功能,其包含的所有子内容都将被注释掉,
此标记不允许嵌套使用,如嵌套使用会生成不正确的代码,
在运行时会出现编译错误。
important <mte:important priority="1">
<mte:var expression="int index = 0;" />
</mte:important>
该语句能够将其所包含的代码提前到html标记开始
输出之前执行,在一些场合非常有用。通常important语句
内部包含的都是如上列出的模板语句,如果直接包含html标
记的话可能会导致页面显示不正常

其属性priority只能填写数字(int型),它表示语句的优先权,
数字越小优先级越高
import <mte:import namespace="System.Net" /> 该语句是用来动态导入命名空间的,模板引擎会自动排除重
复的命名空间,并将它们附加到代码顶端
newline <mte:newline /> 该语句用来在生成的.aspx文件中插入一个空行,对页面输出
无任何影响。
setting <mte:setting name="MaxNestting" value="20" /> 配置型标记。可以在模板代码中向模板引擎提供程序提供配置信息。
addstaticvar <mte:addstaticvar name="" value="" /> 配置型标记。可以在模板代码中向模板引擎提供程序添加静态变量。
ignore <mte:ignore />
<mte:ignore value="true" />
<mte:ignore value="false" />
该语句用于忽略所标记的模板的处理。
模板引擎检测到包含此标记的模板时将直接跳过且不进行任何处理。
setlang
setlanguagecode
<mte:setlang value="ZH-CN" />
<mte:setlanguagecode value="ZH-CN" />
多语言引擎标记。
该语句用来即时切换语种。
备注 配置型标记从严格意义上讲不是模板语句。
  • 网鸟Asp.Net模板引擎 Version 2.2.1016.35 的动态变量标记格式为:{$....$},实际上它也可以填写任意的C#代码,但它在解析的时候会在前后都添加“+”号。
  • 网鸟Asp.Net模板引擎 Version 2.2.1016.35 的静态变量标记格式为:{#....#},它在解析的时候会直接转换为最终字符串。

网鸟Asp.Net模板引擎 Version 2.2.1016.35 的一些兼容性问题的解决:

  1. 在语句标记的expression属性当中不可以直接使用双引号,如果要使用双引号,请以两个连续的单引号代替;
  2. 在语句标记的expression属性当中可以包含html标记,但请注意双引号问题;
  3. 在模板代码任何位置出现的meta标记都会自动整理到第一个meta标记出现的位置,因此您的模板代码顶部请务必至少包含一个meta标记;
  4. 在模板代码任何位置出现的link标记都会自动整理到第一个link标记出现的位置,注意事项同上;
  5. 如果遇到后来书写的代码需要优先执行,请使用important语句解决,如果使用此语句无法解决,请尝试修订您的模板架构;
  6. 通过实现IProcessHandler接口,可以添加自定义模板处理前和处理后的过程的代码;
  7. 通过 YMind.TemplateEngine.Tag 类,可以定义自己的标记,然后通过TemplateEngineProvider.Tags.Add()方法注册即可使用;
  8. 如果需要在最终结果中包含变量标记,例如需要输出“{$....$}”,那么就需要在“{$....$}”前方加入一个“\”对其进行转义。示例如下:
    目标输出:{$....$},模板代码:\{$....$};
    目标输出:\{$....$},模板代码:\\\{$....$};
    目标输出:\\{$....$},模板代码:\\\\\{$....$};
    以此类推
  9. 如果需要在最终结果中包含单独的“\”字符,请在编写源代码的时候用两个连续的“\”代替(第8条就是例子)。示例如下:
    目标输出:\,模板代码:\\。
  10. 动态变量标记转义功能同样应用于静态变量标记。
网鸟IT技术论坛 彦铭工作室 页面执行时间:328毫秒,最后更新:2009-10-16 13:59:54
为简便起见,本示例代码未采用地址重写等技术。