动态变量标记格式为:{$....$},可以填写任意的C#代码,但在解析的时候会在前后都添加“+”号.
静态变量标记格式为:{#....#},在解析的时候会直接转换为最终字符串.
模板引擎是为了使用户界面与业务数据分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
模板引擎不属于特定技术领域,它是跨领域跨平台的概念。
模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换一下便生成了最终需要的业务数 据(比如网页)。
置换型模板引擎实现简单,但其效率底下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。
模板引擎可以让(网站)程序实现界面与数据分离,这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易。
我们司空见惯的模板安装卸载等概念,基本上都和模板引擎有着千丝万缕的联系。模板引擎不只是可以让你实现代码分离(业务逻辑代码和用户界面代码),也可以实现数据 分离(动态数据与静态数据),还可以实现代码单元共享(代码重用),甚至是多语言、动态页面与静态页面自动均衡(SDE)等等与用户界面可能没有关系的功能。
模板引擎是为了降低耦合度,减少代码重复率而生,就是动态网站一个页面版式是不变的,只是数据,图片在变。所以把不变的东西都写成一个模板,用特殊字符标注动态加载的内容,需要显示该页面的时候,根据传入的参数自动从数据库中读取相应参数并替换特殊标注字符内的内容,然后以文件流的形式输出,这个也不是必须的,可用可不用。需要针对每个风格不同的页面都要写一个模板。
mte:foreach expression="char c in name"></mte:foreach> foreach
<mte:for expression="int i = 0; i < 10; i++"></mte:for> 实现C#中的foreach语句for
<mte:if expression="x == 1"><mte:elseif expression="x == 2" /><mte:else /></mte:if> 实现C#中的for语句gotoif-elseif-else
<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#中的if语句lock实现C#中的lock语句returnswitch
<mte:try></mte:try><mte:catch expression="Exception ex"></mte:catch><mte:finally></mte:finally>实现C#中的switch语句try
<mte:important priority="1">
<mte:var expression="int index = 0;" />
</mte:important>该语句能够将其所包含的代码提前到html标记开始输出之前执行,在一些场合非常有用。
通常important语句内部包含的都是如上列出的模板语句,
如果直接包含html标记的话可能会导致页面显示不正常其属性priority只能填写数字(int型),
它表示语句的优先权,数字越小优先级越高
<mte:import namespace="System.Net" /> import
<mte:setting value="20" /> setting配置型标记,可以在模板代码中向模板引擎提供程序提供配置信息。
<mte:addstaticvar value="" /> addstaticvar配置型标记,可以在模板代码中向模板引擎提供程序添加静态变量。
ignore
<mte:ignore value="false" />
<mte:setlang value="ZH-CN" />
<mte:setlanguagecode value="ZH-CN" />
<mte:feature enablestopwatch="false" ></mte:feature> 是否生成Stopwatch代码,默认为false
<mte:feature enablesde="false"></mte:feature> 是否启用SDE,默认为false,要启用此选项,必须为本模板指定基类,且必须实现ISDEHandler接口
<mte:feature enableruntimehandler="false"></mte:feature> 是否生成运行时后期处理代码,默认为false,要启用此选项,必须为本模板指定基类,且必须实现ISDEHandler接口
<mte:feature enablefilepacking="false"></mte:feature> 是否启用代码打包功能,默认为false
<mte:inherits value="MyWebsite.WebUI.Page1"></mte:inherits> 设置基类
<mte:import namespace="MyWebsite.WebUI"></mte:import> 导入命名空间
<mte:important priority="9999"></mte:important> 提升语句执行优先级的标记,取值越大,其优先级越高
<mte:var expression="var xNow1 = ''当前时间:'' + DateTime.Now;"></mte:var> var是一个单行万能代码语句,它无所不能!当需要双引号的时候,请使用两个连续的单引号替代
<mte:packing type="StyleSheet" match="../styles/common.css" file="./styles/common.css" /> 注意,这里的路径带上了wwwroot,是针对vs调试时实际上这里要求输入绝对根路径需要根据实际情况来更改当file不指定时,将使用match作为file的值