CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

如何把动态网页转换成静态网页

楼主gjfjiushigjf(啊飞)2005-06-03 18:07:25 在 .NET技术 / ASP.NET 提问

怎样把.aspx文件自动的转换成.htm文件,以提高速度。 问题点数:0、回复次数:10Top

1 楼tttick(秉承一贯懒散的生活方式与严谨的工作态度¢)CodinG)回复于 2005-06-03 18:13:42 得分 0

环境: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>  
   
   
   
   
   
  ------------------------------------------------------------------------  
  提示添加成功后会出以当前时间为文件名的html文件!上面只是把传递过来的几个参数直接写入了HTML文件中,在实际应用中需要先添加数据库,然后再写入HTML文件  
  而且需要把生成的文件名等写入数库以便以后调用等,此实例只是实现了根据提交过来参数替换模板中的相应的字段!   需要完善的地方很多!哪位有高见,欢迎赐教!Top

2 楼yulitian(折磨)回复于 2005-06-03 18:16:29 得分 0

如果没有功能代码,直接改扩展名呗  
   
  有功能代码的,不太可能了。要不,你还是学Javascript吧,在HTML文件里面用JavaScript一样可以写服务器端脚本的。Top

3 楼LaoDai_Net(『老代』)回复于 2005-06-03 18:28:48 得分 0

想要自动重新改成html恐怕没有办法  
  可以使用tttick   的代码生成   html  
   
  还有一个办法就是使用   UrlRewrite    
   
  其实aspx   不见不html慢到那里去,,,关键是你的代码执行效率!!!Top

4 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-03 18:33:03 得分 0

很多东西非常简单,关键是学习原理,不要轻易说“不可能”而放弃学习的机会。  
   
  假设   a.aspx   要写成   a.htm,思路是在   a.aspx   中:  
   
  Protected   Override   Sub   Render(ByVal   writer   As   HtmlTextWriter){  
      mybase.Render(writer);  
      FileStream   FW=new   FileStream(Server.MapPath(Request.Application+"a.htm"),  
          Create);  
      writer.Write(FW);  
      FW.Close();  
  }  
   
  然后,在   a.aspx   的Init或者Load事件中判断是否存在a.htm文件,如果存在,读进来输出给Response。  
   
  当你需要重建静态页面的时候,只要删除   a.htm   文件就行了,下一次访问   a.aspx   的时候会自动重建。Top

5 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-03 18:35:04 得分 0

注意,这与网页上有什么控件输出并没有任何关系。  
   
  很多东西,没有你想象的那么复杂。你可能很复杂地做出来了,但是要意识到越是复杂越是可能不够周全。Top

6 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-03 18:41:07 得分 0

在   a.aspx   的Init或者Load事件中判断是否存在a.htm文件,如果存在,读进来输出给Response,在Response.Write命令参数中直接结束后边的页面处理。这样,虽然客户端访问的是a.aspx,但是与访问a.htm几乎一模一样。  
  Top

7 楼tttick(秉承一贯懒散的生活方式与严谨的工作态度¢)CodinG)回复于 2005-06-03 18:43:11 得分 0

楼上的。。。这样做的意义何在??  
  难道是为了显示成aspX而做成这样吗??Top

8 楼rijcm(rijcm)回复于 2005-06-10 17:28:17 得分 0

关注   !Top

9 楼leisang(仰望深邃的星空)回复于 2005-06-10 17:53:06 得分 0

我去试一下sp1234()   的方法,非常新颖Top

10 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-23 00:29:31 得分 0

http://community.csdn.net/Expert/topic/4098/4098032.xml?temp=.2849237Top

相关问题

  • 如何用动态网页生成静态网页?
  • VC中将动态连接库转换为静态连接库
  • 如何将静态数组转换到动态数组?
  • 动态链接库转换为静态链接库问题,急!!
  • 怎么把动态页面转换成静态页面?
  • JSP中如何把动态页面转换为静态页面
  • 静态网页
  • 急!动态网页静态化的怎么来处理?????
  • 关于静态网页里嵌套动态内容,我晕死
  • 关于动态生成静态网页的问题

关键词

  • .net
  • 文件
  • 代码
  • html
  • server
  • 静态
  • httpcontext
  • sr
  • current
  • str

得分解答快速导航

  • 帖主:gjfjiushigjf

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo