关于如何定于模板请看: Defining Templates ,这篇文章将使我们对StringTemplate有个初步的认识
然后可以看看如何使用组文件: Group Files
接下来得看看 Expressions
看完上面的几篇文章对StringTemplate会有个大致的认识了,里面附带了大量的示例代码。
现在来定义一个简单的实体类:
using
System;
/// <summary>
/// User 的摘要说明
/// </summary>
public class User
{
public User ( int user_id, int user_age, string user_name )
{
this .user_id = user_id;
this .user_age = user_age;
this .user_name = user_name;
}
private int user_id;
private string user_name;
private int user_age;
public int User_id
{
get { return user_id; }
set { user_id = value; }
}
public int User_age
{
get { return user_age; }
set { user_age = value; }
}
public string User_name
{
get { return user_name; }
set { user_name = value; }
}
}
再来定义几个模板文件放在跟目录的template文件夹下:
/// <summary>
/// User 的摘要说明
/// </summary>
public class User
{
public User ( int user_id, int user_age, string user_name )
{
this .user_id = user_id;
this .user_age = user_age;
this .user_name = user_name;
}
private int user_id;
private string user_name;
private int user_age;
public int User_id
{
get { return user_id; }
set { user_id = value; }
}
public int User_age
{
get { return user_age; }
set { user_age = value; }
}
public string User_name
{
get { return user_name; }
set { user_name = value; }
}
}
1.page.st
<
html
>
< head >
< title > $title$ </ title >
</ head >
< body >
< h1 > $title$ </ h1 >
$body$
</ body >
</ html >
2.user_list.st
< head >
< title > $title$ </ title >
</ head >
< body >
< h1 > $title$ </ h1 >
$body$
</ body >
</ html >
<
table
border
="1"
>
< tr >
< th > id </ th >
< th > name </ th >
< th > age </ th >
</ tr >
$users:row1(),row2()$
</ table >
3.row1.st
< tr >
< th > id </ th >
< th > name </ th >
< th > age </ th >
</ tr >
$users:row1(),row2()$
</ table >
<
tr
bgcolor
="green"
>
< td > $it.User_id$ </ td >
< td > $it.User_name$ </ td >
< td > $it.User_age$ </ td >
</ tr >
4.row2.st
< td > $it.User_id$ </ td >
< td > $it.User_name$ </ td >
< td > $it.User_age$ </ td >
</ tr >
<
tr
bgcolor
="red"
>
< td > $it.User_id$ </ td >
< td > $it.User_name$ </ td >
< td > $it.User_age$ </ td >
</ tr >
row1.st和row2.st是用来实现交替行换色效果的
< td > $it.User_id$ </ td >
< td > $it.User_name$ </ td >
< td > $it.User_age$ </ td >
</ tr >
运行下面的代码:
User[] myUser
=
new
User[
5
];
myUser[ 0 ] = new User( 1 , 10 , " a " );
myUser[ 1 ] = new User( 2 , 20 , " b " );
myUser[ 2 ] = new User( 3 , 30 , " c " );
myUser[ 3 ] = new User( 4 , 40 , " d " );
myUser[ 4 ] = new User( 5 , 50 , " e " );
StringTemplateGroup myGroup = new StringTemplateGroup( " template " , Server.MapPath( " ~/template " ) );
StringTemplate pagest = myGroup.GetInstanceOf( " page " );
StringTemplate bodyst = myGroup.GetInstanceOf( " user_list " );
pagest.SetAttribute( " title " , " my test " );
pagest.SetAttribute( " body " , bodyst );
bodyst.SetAttribute( " users " , myUser );
Response.Write( pagest.ToString( ) );
显示的效果如下图:
myUser[ 0 ] = new User( 1 , 10 , " a " );
myUser[ 1 ] = new User( 2 , 20 , " b " );
myUser[ 2 ] = new User( 3 , 30 , " c " );
myUser[ 3 ] = new User( 4 , 40 , " d " );
myUser[ 4 ] = new User( 5 , 50 , " e " );
StringTemplateGroup myGroup = new StringTemplateGroup( " template " , Server.MapPath( " ~/template " ) );
StringTemplate pagest = myGroup.GetInstanceOf( " page " );
StringTemplate bodyst = myGroup.GetInstanceOf( " user_list " );
pagest.SetAttribute( " title " , " my test " );
pagest.SetAttribute( " body " , bodyst );
bodyst.SetAttribute( " users " , myUser );
Response.Write( pagest.ToString( ) );

现在不使用page.st,使用字符串代替page.st里的数据:
//
StringTemplate pagest = myGroup.GetInstanceOf( "page");
sring strTemp = @" <html>
<head>
<title>$title$</title>
</head>
<body>
<h1>$title$</h1>
$body$
</body>
</html> " ;
StringTemplate pagest = new StringTemplate( myGroup , strTemp );
重新运行,看到的效果将和上图一样的.
sring strTemp = @" <html>
<head>
<title>$title$</title>
</head>
<body>
<h1>$title$</h1>
$body$
</body>
</html> " ;
StringTemplate pagest = new StringTemplate( myGroup , strTemp );
在StringTemplate的官方网站上有大量的说明文档,这些文档里有很多的示例代码,这些是学习StringTemplate很好的资料...