用ASP.NET,C#实现生成静态页面

示列代码    
   
  1.定义(template.htm)html模板页面    
   
  <html>    
   
  <head>    
   
  <title></title>    
   
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
   
  </head>    
   
  <body   >    
   
  <table   $htmlformat[0]   height="100%"   border="0"   width="100%"   cellpadding="10"   cellspacing="0"   bgcolor="#eeeeee"   style="border:1px   solid   #000000">    
   
  <tr>    
   
  <td   width="100%"   valign="middle"   align="left">    
   
  <span   style="color:   $htmlformat[1];font-size:   $htmlformat[2]">$htmlformat[3]</span>    
   
  </td>    
   
  </tr>    
   
  </table>    
   
  </body>    
   
  </html>    
   
  2.asp.net代码:    
   
  //---------------------读html模板页面到stringbuilder对象里----    
   
  string[]   format=new   string[4];//定义和htmlyem标记数目一致的数组    
   
  StringBuilder   htmltext=new   StringBuilder();    
   
  try    
   
  {    
   
  using   (StreamReader   sr   =   new   StreamReader("存放模板页面的路径和页面名"))    
   
  {    
   
  String   line;    
   
  while   ((line   =   sr.ReadLine())   !=   null)    
   
  {    
   
  htmltext.Append(line);    
   
  }    
   
  sr.Close();    
   
  }    
   
  }    
   
  catch    
   
  {    
   
  Response.Write("<Script>alert('读取文件错误')</Script>");    
   
  }    
   
  //---------------------给标记数组赋值------------    
   
  format[0]="background=\"bg.jpg\"";//背景图片    
   
  format[1]=   "#990099";//字体颜色    
   
  format[2]="150px";//字体大小    
   
  format[3]=   "<marquee>生成的模板html页面</marquee>";//文字说明    
   
  //----------替换htm里的标记为你想加的内容    
   
  for(int   i=0;i<4;i++)    
   
  {    
   
  htmltext.Replace("$htmlformat["+i+"]",format[i]);    
   
  }    
   
  //----------生成htm文件------------------――    
   
  try    
   
  {    
   
  using(StreamWriter   sw=new   StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))    
   
  {    
   
  sw.WriteLine(htmltext);    
   
  sw.Flush();    
   
  sw.Close();    
   
  }    
   
  }    
   
  catch    
   
  {    
   
  Response.Write   ("The   file   could   not   be   wirte:");    
   
  }    
   
  小结    
   
  用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。
----------------------------------------------------------------
方法2:
ASP.Net生成静态HTML页    
  环境:Microsoft   .NET   Framework   SDK   v1.1    
  OS:Windows   Server   2003   中文版  
  ASP.Net生成静态HTML页  
  在Asp中实现的生成静态页用到的FileSystemObject对象!  
  在.Net中涉及此类操作的是System.IO    
  以下是程序代码   注:此代码非原创!参考别人代码  
  //生成HTML页  
      public   static   bool   WriteFile(string   strText,string   strContent,string   strAuthor)    
      {  
        string   path   =   HttpContext.Current.Server.MapPath("/news/");  
        Encoding   code   =   Encoding.GetEncoding("gb2312");  
        //   读取模板文件  
        string   temp   =   HttpContext.Current.Server.MapPath("/news/text.html");  
        StreamReader   sr=null;  
        StreamWriter   sw=null;  
        string   str="";      
        try  
        {  
          sr   =   new   StreamReader(temp,   code);  
          str   =   sr.ReadToEnd();   //   读取文件  
        }  
        catch(Exception   exp)  
        {  
          HttpContext.Current.Response.Write(exp.Message);  
          HttpContext.Current.Response.End();  
          sr.Close();  
        }  
       
         
        string   htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";  
        //   替换内容  
        //   这时,模板文件已经读入到名称为str的变量中了  
        str   =str.Replace("ShowArticle",strText);   //模板页中的ShowArticle  
        str   =   str.Replace("biaoti",strText);  
        str   =   str.Replace("content",strContent);  
        str   =   str.Replace("author",strAuthor);  
        //   写文件  
        try  
        {  
          sw   =   new   StreamWriter(path   +   htmlfilename   ,   false,   code);  
          sw.Write(str);  
          sw.Flush();  
        }  
        catch(Exception   ex)  
        {  
          HttpContext.Current.Response.Write(ex.Message);  
          HttpContext.Current.Response.End();  
        }  
        finally  
        {  
          sw.Close();  
        }  
        return   true;  
   
  此函数放在Conn.CS基类中了  
  在添加新闻的代码中引用   注:工程名为Hover  
     
          if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))  
          {  
            Response.Write("添加成功");  
          }  
          else  
          {  
            Response.Write("生成HTML出错!");  
          }  
  -------------------------------------------------------------------------  
  模板页Text.html代码  
  -------------------------------------------------------------------------  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
    <HEAD>  
      <title>ShowArticle</title>  
       
    <body>    
   
    biaoti  
    <br>  
    content<br>  
    author  
    </body>  
  </HTML>  
   
   
   
   
   
   
    biaoti  
    <br>  
    content<br>  
    author  
    </body>  
  </HTML>  
   
   
   
   
   
   
    biaoti  
    <br>  
    content<br>  
    author  
    </body>  
  </HTML>  
posted on 2006-11-24 10:25  hzman  阅读(599)  评论(0编辑  收藏  举报