最近由于公司下属的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"-->
上面都是个人使用的一点心得,呵呵,乘还记得,赶紧记下来.
基本思路如下:将这个固定的代码块使用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>
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>下面是保存为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"-->
