StringTemplate是一个比较优秀的开源项目,可以在 DownLoad StringTemplate下载各版本的源码.
关于如何定于模板请看: 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文件夹下:
1.page.st
<html>
  
<head>
    
<title>$title$</title>
  
</head>
  
<body>
    
<h1>$title$</h1>
    $body$
  
</body>
</html>
2.user_list.st
<table border="1">
  
<tr>
    
<th>id</th>
    
<th>name</th>
    
<th>age</th>
  
</tr>
  $users:row1(),row2()$
</table>
3.row1.st
<tr bgcolor="green">
  
<td>$it.User_id$</td>
  
<td>$it.User_name$</td>
  
<td>$it.User_age$</td>
</tr>
4.row2.st
<tr bgcolor="red">
  
<td>$it.User_id$</td>
  
<td>$it.User_name$</td>
  
<td>$it.User_age$</td>
</tr>
row1.st和row2.st是用来实现交替行换色效果的
运行下面的代码:
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( ) );
显示的效果如下图:

现在不使用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 );
重新运行,看到的效果将和上图一样的.
在StringTemplate的官方网站上有大量的说明文档,这些文档里有很多的示例代码,这些是学习StringTemplate很好的资料...
posted on 2007-07-06 14:19  空空儿  阅读(1426)  评论(0编辑  收藏  举报