复合标签

复合标签通常由一到多个基本标签组合成。

布局标签

Layout Tag: 语法:${ layout("路径") } 布局标签类似于ASP.NET的母版页。必须出现在页面的第一行。

示例 父页面(parent.html):

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JNTemplate demo</title>
  </head>
  <body>
      ${body}
  </body>
</html>

示例 子页面(index.html):

$layout("parent.html")
<p>i'm child!</p>

输出结果:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JNTemplate demo</title>
  </head>
  <body>
      <p>i'm child!</p>
  </body>
</html>

WARNING

支持版本 1.4 +,layout标签必须在在模板的最顶行申明。

IF标签

IF Tag,语法:

$if(条件1)
..
$elseif(条件2)
..
$else
..
$end

用来处理逻辑代码,必须以End标签结束。多个条件可以配合Elseif标签(也可以写作elif)使用。条件里可以是逻辑算运标签,也可以是单个对象,如果是单个对象时,按以下规则计算:

  1. 数字:0 false 否则 true
  2. 字符串:null或者"" false 否则 true
  3. 对象: null false 否则 true

示例

var  templateContent = @"
${if(value>5)}
    value大于5
${elif(value<5)}
    value小于5
${else}
    value等于5
${end}
";
var template = Engine.CreateTemplate(templateContent);
template.Set("value", 10);
var result = template.Render();
Assert.AreEqual("value大于5", result);

Elseif标签

Elseif Tag, 语法:${ elseif("条件") }

Elseif标签是IF标签的子标签,只能和IF一起使用,不能单独存在,v1.4.0以上版本也可以简写成 $elif(条件)。用法参见:IF标签。

Else标签

Else Tag,语法:${ else }

Else标签是IF标签的子标签,只能和IF一起使用,不能单独存在,用法参见:IF标签。

迭代标签

Foreach Tag, 语法:

$foreach(子对象 in 循环对象)...
$end

其中循环对象必须实现IEnumerable接口,用法与C#中的foreach类似。

注意:在循环体内的对象(即foreach与end之间的内容 )在标签结束后无法继续访问,在标签体内使用SET标签设定的值在离开该标签作用域后也会失效。

1.4以上版本foreach . in .可以简写成for . in .

示例

var  templateContent = @"
<ul>
$foreach(i in list)
<li>$i</li>
${end}
</ul>
";
var template = Engine.CreateTemplate(templateContent);
template.Set("list", new char[] { 'j', 'n', 't', 'e', 'm', 'p', 'l', 'a', 't', 'e' });
var result = template.Render();

输出:

<ul>
<li>j</li>
<li>n</li>
<li>t</li>
<li>e</li>
<li>m</li>
<li>p</li>
<li>l</li>
<li>a</li>
<li>t</li>
<li>e</li>
</ul>

TIP

对象必须实现IEnumerable,注意作用域。

循环标签

For Tag:, 语法:

$for(初始化码; 逻辑代码; 增量代码)
...
$end

循环标签必须以end结束。注意:在循环体内的对象(即for与end之间的内容 )在标签结束后无法再访问, 该标签如果条件永恒为真的话会造成死循环,请慎用。比如$for(i=0;i<1;i--)

示例:

var  templateContent = @"
<ul>
$for(i=1;i<4;i++)
<li>$i</li>
${end}
</ul>
";
var template = Engine.CreateTemplate(templateContent);
var result = template.Render();

输出:

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>

TIP

注意条件是否会造成死循环。

赋值标签

Set Tag,语法:$set(名称=值)

赋值标签用于定义一个变量或者给改变指定变量的值。 如:$(set id=10) 或者 $(set model=GetData())

示例:

var templateContent = "$set(id=10)$id";
var template = Engine.CreateTemplate(templateContent);
var result = template.Render();
Assert.AreEqual("10", render);

WARNING

  1. 注意在forforeach中使用时,必须注意作用域。

  2. 只能给变量赋值,不能给属性或者字段赋值。

加载标签

Load Tag,语法:$load(路径)

加载标签用于加载指定的模板页面,并解析模板内容。

示例 模板文件header.html:

<p>你好,$name</p>

后台代码

var templateContent = "$load(\"header.html\")";
var template = Engine.CreateTemplate(templateContent);
template.Set("name","jntemplate");
var result = template.Render();

输出:

<p>你好,jntemplate</p>

引用标签

Include Tag,语法:$include(路径)

引用标签用于引用其它模板页,作用与LoadTag相似,但是不执行解析。

示例 模板文件header.html:

<p>你好,$name</p>

后台代码

var templateContent = "$include(\"include.html\")";
var template = Engine.CreateTemplate(templateContent);
template.Set("name","jntemplate");
var result = template.Render();

输出:

<p>你好,$name</p>
Last Updated:
Contributors: 翅膀的初衷, hnvvv