Micro模板语法

Micro 模板语法和C#非常接近,4.0和3.0版本中,标签语法大同小异,依然符合于技术开发人员的编程习惯。如果你是一名程序员,下面的语法我相信只需要看一次便可牢牢记住各种标签的使用规则,所以你不必担心Micro模板难掌握。如果非程序员,难度有所加大,毕竟我们考虑到了整个系统的扩展性和二次开发,所以比较偏向于技术开发人员。

页面嵌套标签

如果想在一个模板页面中嵌入另一个模板页的内容可使用该标签,注意避免被嵌套的页面嵌套主模板页,这样会造成迭代循环。另外,嵌套的深度最多只能5层。其中src所指定的路径为当前相对路径,如src="common/_header.html"

<!--一般在当前模板下使用可下面的嵌套标签-->
<%include file="模板页面相对路径"%>

<!--如需跨模板访问可使用下面的嵌套标签,一般插件模板使用较多,前提该模板须存在,否则访问不到-->
<%template skin="模板目录名" src="模板页面相对路径"%> 

当前模板路径标签

因为3.0版本中增加分站的功能,所以这里和2.1及前版本的模板标签有所不同。输出不包含/,如:templates/green/images/logo.png,同一模板目录下使用第一个种标签即可

<!--当前模板路径标签-->
<%templateskin%>  <!--访问其它模板的路径标签,前提该模板须存在-->
<%templateskin="模板目录名"%> 

嵌入C#代码标签

如果其它标签无法实际你想要的效果,你可以试一下直接写C#代码,如意不能使用Response.Write

<%csharp%>
//C#代码
<%/csharp%> 

引用命名空间标签

如果需要引用命名空间则需要使用该标签,注意此标签不能放在嵌套的页面且需要放置在模板页的最顶部

<!--示例:<%namespace "Micro.BLL"%>-->
<%namespace "命名空间"%>

普通变量标签

模板页的变量概念实际上就是C#的变量,在模板页调用时需加上大括号,这里往往和模板页的JS的方法体互相冲突,所以在写JS时,遇到大括号一定要换行。

<!--直接变量-->
{varname} 

<!--实体变量,如:{config.webname} -->
{var.item}

数据变量标签

数据变量一般在循环列表时使用到,另外在显示内容时也会用到

<!--循环列表时的数据变量,如:{dr[title]} -->
{var[...]} 

<!--显示实体数据变量,如:model.fields[title]-->
{var.item[...]} 

loop循环标签

loop循环标签主要是数据列表中使用的,其中自带有行号变量datarow__loop__id,该变量是从1开始

参数说明:

datarow:DataRow类型的变量,同一页面内不可重复,否则编译出错

datatable:DataTable类型的变量,使用前请确保该参数已声明赋值

<!--loop循环标签-->
<%loop datarow datatable%>
...
<%/loop%>

foreach循环标签

foreach标签和C#的语法是一样的,写法也差不多,相信技术人员一看就懂。注意与loop标签不同的是它没有自带的行号变量,需要手动声明。

参数说明:

type:数据类型,如DataRow

item:数据类型的变量名,自定义变量名

list:数组、结构、对象、引用类型

<!--foreach循环标签-->
<%foreach(type item in list)%>
...
<%/foreach%>

for循环标签

for标签和C#的语法也是一样的,一般很少用到。

参数说明:

i:整型变量

count:整型变量

<!--for循环标签-->
<%for(int i=0;i<=count;i++)%>
...
<%/for%>

if判断语句标签

if判断语句与C#的语法一样,3.0支持二种写法,保留旧的写法

<!--第一种格式写法(推荐)-->
<%if(...)%>
...
<%else if(...)%>
...
<%/if%>

<!--第二种格式写法(旧写法)-->
<%if ...%>
...
<%else if ...%>
...
<%/if%>

continue退出当前循环标签

循环标签中分支用以结束当前循环,直接进入下一次循环的标签,使用方式同传统程序一致。

<!--continue标签-->
<%continue%>

<!--使用示例,当i等于5时退回并进入下一条循环-->
<%for(int i=0;i<=count;i++)%>
<%if(i==5)%>
<%continue%>
<%/if%>
<%/for%>

break结束循环标签

在循环标签中用以结束循环,进入后续程序的标签,使用方式同传统程序一致 。

<!--break标签-->
<%break%>

<!--使用示例,当i大于5时结束循环-->
<%for(int i=0;i<=count;i++)%>
<%if(i>5)%>
<%break%>
<%/if%>
<%/for%>

获取GET传输参数标签

获取URL地址GET传输的参数值

<!--request标签,varname为参数名-->
{request[varname]}

截取字符串长度标签

当一个字符串的长度大于你想要的值时可使用该标签

参数说明:

num:int类型,字符串长度

<!--cutstring标签,{...} 为变量-->
<%cutstring({...} ,num)%>

日期格式转换标签

把日期字符串转换成你想要的格式

参数说明:

strFormat:日期格式

<!--datetostr标签,{...} 为变量-->
<%datetostr({...} ,strFormat)%>

<!--示例一:输出年月日格式的日期-->
<%datetostr({varname} ,yyyy年MM月dd日)%>

<!--示例二:输出年月日时分秒格式的日期-->
<%datetostr({varname} ,yyyy年MM月dd日HH时mm分ss秒)%>

整型格式转换标签

当一个字符串的想转换成一个整型的数字时可使用该标签

<!--strtoint标签,{...} 为字符串变量-->
{strtoint({...} )} 

直接输出内容标签

当一个方法返回的是字符串内容,而我们又想直接在模板页中直接输出可使用该标签。该标签支持两种写法,推荐用第一种。

<!--第一种写法(推荐)-->
<%=方法名(参数一,参数二,...)%>

<!--第二种写法(旧写法)-->
<%write 方法名(参数一,参数二,...)%>

声明变量与赋值标签

和C#语法基本一致,需要声明或在需要接受一个方法返回的内容时可以使用该标签。

参数说明:

type:可选,变量的类型,如果有type则首先创建对象再赋值,否则直接赋值

ref:变量名,同一页面内不可重复

expression:变量、常量或方法都可以

<!--第一种写法(推荐)-->
<%set [type] ref=expression%>

<!--示例一-->
<%set int num=1%>
<!--再次使用时不用再声明-->
<%set num=2%>

<!--示例二-->
<%set DataTable dt=get_list(参数一,参数二,...)%>
<!--第二种写法(旧写法)-->
<%set [(type)]{ref} =expression%>

<!--示例一-->
<%set (int){num} =1%>
<!--再次使用时不用再声明-->
<%set {num} =2%>

<!--示例二-->
<%set (DataTable){dt} =get_list(参数一,参数二,...)%>

通用标签

通用标签在所有模板页面都可以使用,如果您下载的是Micro的源码版,请查看Micro.Web.UI项目下的Label文件夹,如果默认标签不够用的情况下,你也可以在里面新增一些自定义的标签,但记住编译一下整个项目。

统一链接标签

主要对Micro.Web\xmlconfig\urls.config文件里的节点读取和匹配。

参数说明:

key:URL配置的名称

params:Object参数列表

<%linkurl(key,params)%>

<!--示例一:首页链接-->
<%linkurl("index")%>

<!--示例二:关于我们链接-->
<%linkurl("content","about")%>

分页页码标签

输入分页页码按钮链接,需要和pagination.css一起使用。

参数说明:

pagesize:每页显示条数

pageindex:当前页码

totalcount:总记录数

key:URL配置的名称

params: Object参数列表

get_page_link(pagesize, pageindex, totalcount, key, params)
<!--示例一:列表分页,其中“__id__”为页码数字,系统自动替换-->
<%set string pagelist=get_list(12,page,totalcount,"news_list", category_id, "__id__")%>
<!--放置页码列表,class="flickr"里面的样式可以修改成不同的23种风格-->
<div class="flickr">{pagelist}</div>

调用插件列表标签

主要用于主模板面调用插件方法,为了防止插件卸载后页面出错,建立使用该方法调用。

参数说明:

assemblyName:命名空间全局限定名

className:类名

methodName:方法名称

params:Object参数

get_plugin_method(assemblyName, className, methodName, params)
<!--示例一:输出留言插件列表的最新4条留言信息-->
<%set DataTable flist=get_plugin_method("Micro.Web.Plugin.Feedback", "feedback", "get_feedback_list", 4, "is_lock=0")%>
<!--使用foreach循环输出-->
<%foreach(DataRow dr in flist.Rows)%>
  留言标题:{dr[title]}
<%/foreach%>

常见问题

Q:制作模板时应该注意些什么?

A:首先需要注意该模板的保存文本格式为UTF-8;第二在模板页写Javascript代码时<SCRIPT>要改为小写<script>,遇到大括号{}时不要写成一行,一定要换行,否则模板引擎当成变量处理。

Q:模板生成后,测览页面时提示错误,错误信息:非法字符?

A:此类问题大部分是由于模板页面文件的保存格式为GBK或其它编码造成的,解决方法是找到该模板页,右键选择记事本打开,重新保存一下格式为UTF-8编码即可。

Q:模板生成后,测览页面时提示错误,错误信息:缺少}结束符?

A:一般在模板页使用循环或判断标签时,如果忘了加上结束标签则会出现以上错误,解决方法是找到模板页中有循环或判断的地方未加结束标签的加上对应的结束标签。

Q:模板制作好后,放到模板对应的文件夹,生成模板却找不到生成的aspx页面?

A:出现此类问题应先检查URL配置,查找有无URL配置指向这个模板名称,如果没有则需要添加一条URL配置信息。