最近由于公司下属的2个网站改版的工作,需要在2个平台上交叉的显示一些对方的内容,譬如将我们商城的内容显示在对方资讯的内容页面上去,虽然我们的平台有现成的代码,可是由于2个平台架设在不同的服务器上,还有彼此是2个独立的数据库,因此需要考虑如何编辑那些页面上格式固定,可是内容经常需要更新的代码块。
基本思路如下:将这个固定的代码块使用html页面写出基本格式,对里面需要经常更新内容的那些项,比如图片,链接等,使用一定的字符标记出来(如:<img src="<#img1#>">),然后将其读出,保存在一个字符串里,用从数据库中读出的数据替换它们,然后把他们写入文件,保存为html文件,或者javascript文件。保存为html文需要在同一个平台上使用,调用的时候使用include或者iframe调用,如果保存为javascript文件,无论是否是同一个平台都可以使用,调用的时候使用<script language=javascript src="调用地址url">,在同一个平台上使用这2种方法,变相的替代了用户控件。

这个是控制格式显示的html代码test1.htm:
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<#Name1#><img src="<#img1#>">
</td>
</tr>
<tr>
<td>
<#Name2#><img src="<#img2#>">
</td>
</tr>
</table>
下面是生成javascript文件时的代码:
DataSet ds = Getds();
            DataTable db 
= ds.Tables[0];
            System.IO.StreamReader sr 
= new System.IO.StreamReader(Server.MapPath("test1.htm"));
            StringBuilder sb 
= new StringBuilder();
            
while(sr.Peek() >=0)
            
{
                
string str = sr.ReadLine();
                str.Replace(
"\"","\\\"");
                sb.Append(
"document.write('"+str+"');");
            }

            sr.Close();
            
string rst = sb.ToString();
            
for(int i=0;i<2;i++)
            
{
                rst 
= rst.Replace("<#Name" + (i+1).ToString() + "#>",db.Rows[i]["Full_Name"].ToString());
                rst 
= rst.Replace("<#img" + (i+1).ToString() + "#>",db.Rows[i]["small_Image"].ToString());
            }

            System.IO.StreamWriter sw 
= new System.IO.StreamWriter(Server.MapPath("test.js"),false,System.Text.Encoding.UTF8);
            sw.Write(rst);
            sw.Close();
调用时的代码:
<script language="JavaScript" src="test.js"></script>
这样只要页面显示格式不变,内容变化时,只需要控制输出那个保存数据的dataset就可以了。
下面是保存为html文件时的代码:
DataSet ds = Getds();
            DataTable db 
= ds.Tables[0];
            
string rst = sr.ReadToEnd();
            sr.Close();
            
for(int i=0;i<2;i++)
            
{
                rst 
= rst.Replace("<#Name" + (i+1).ToString() + "#>",db.Rows[i]["Full_Name"].ToString());
                rst 
= rst.Replace("<#img" + (i+1).ToString() + "#>",db.Rows[i]["small_Image"].ToString());
            }


            System.IO.StreamWriter sw 
= new System.IO.StreamWriter(Server.MapPath("test.htm"),false);
            sw.Write(rst);
            sw.Close();
调用时代码:
<!--include virtual="test.htm"-->
上面都是个人使用的一点心得,呵呵,乘还记得,赶紧记下来.