C#动态成生并打开网页

原创 2007年10月09日 09:37:00

      下面是通过C#调用模板页(test.html),动态的生成静态的HTML网页的源码。页面加载时调用方法清除不在最近某一时间断生成的网页。

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;

public partial class BuildPage : System.Web.UI.Page
...{
    
private static string  staticfilename ="";
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
if (!IsPostBack)
        
...{       //页面第一次加载时清除BuildPage文件夹下的文件
            clearPic();
        }

    }

    
protected void BtnBuildHtml_Click(object sender, EventArgs e)
    
...{     //   传入HTML页面的标题和内容,一般都是动态生成的。这里传入了一个固定的值
        if(WriteFile("这是标题","这是内容"))
          
...{   
            Response.Write(
"添加成功");

            
//页面跳转到生成的HTML页面
            Response.Redirect("buildpage/"+staticfilename);
          }
   
          
else   
          
...
            Response.Write(
"生成HTML出错!");   
          }

    }


    
/**//// <summary>
    
/// 删除不在这一分钟内产生的HTML文件
    
/// 应有相应的权限。需try
    
/// </summary>

    private void clearPic()
    
...{
        
string strAbsolutePath = HttpContext.Current.Server.MapPath("BuildPage/");
        
string[] fileEntres = System.IO.Directory.GetFiles(strAbsolutePath);
        
foreach (string afile in fileEntres)
        
...{
            
//将文件的生成日期与系统日期相比,如果是当日以前生成的文件,删除它,这里精确到分钟,可根据需要设置临时文件保存的时间。
            if (System.DateTime.Compare(System.IO.File.GetCreationTime(afile).AddMinutes(1), System.DateTime.Now) < 0)
            
...{
                
try
                
...{
                    System.IO.File.Delete(afile);
                }

                
catch (Exception)
                
...{

                }

            }

        }

    }


    
/**//// <summary>
    
/// 写入HTML文件,可根据需要修改 此方法的参数
    
/// </summary>
    
/// <param name="strText">传入的标题</param>
    
/// <param name="strContent">HTML的内容</param>
    
/// <returns></returns>

    private bool WriteFile(string strText, string strContent)
    
...{
        
string path = HttpContext.Current.Server.MapPath("BuildPage/");
        Encoding code 
= Encoding.GetEncoding("gb2312");
        
//   读取模板文件   
        string temp = HttpContext.Current.Server.MapPath("test.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";
        staticfilename 
= htmlfilename;
        
//   替换内容   
        
//   这时,模板文件已经读入到名称为str的变量中了   
        str = str.Replace("Title", strText);   //替换模板页中的Title
        str 
= str.Replace("Content", strContent);    
        

        
//   写入文件   
        try
        
...{
            
string filename =path + htmlfilename;
            
            sw 
= new StreamWriter(filename, 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;
    }

}

下面是模板页test.thml的HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"   >   
  
<HTML>   
    
<HEAD>   
      
<title>Title</title> 
    
<body> 
        content
    
</body>   
  
</HTML> 

如果这些代码给你带来了帮助,请留言。

动态生成html缓存页面

动态缓存访问的html页面,过滤器实现。 需求:例如买书网站,有成千上万本图书,用户可以点击图书的链接查看图书的详细信息,但如果每一次查看都要访问数据库的话,就会造成资源的极大浪费,为了节约我们有限...
  • xzm_rainbow
  • xzm_rainbow
  • 2013年11月10日 19:43
  • 1283

EXT之window动态加载页面

首先看下普通的窗口: Js代码  function newWin() {     var win=new Ext.Window({title:"窗口",             wid...
  • binyao02123202
  • binyao02123202
  • 2013年02月21日 15:35
  • 2483

html5 实现动态网页截屏 页面生成图片并打印(图文)

html2canvas通过获取页面的DOM和元素的样式信息,并将其渲染成canvas图片,从而实现给页面截图的功能。 因为每个浏览器渲染页面的方式都不尽相同,所以生成的图片也不太一样。 环...
  • lu8000
  • lu8000
  • 2015年03月12日 11:58
  • 12669

c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)

整理一下最近做的几个项目。总结几个用到的知识点和关键部分代码,以供大家学习交流。 1、爬虫抓取网页内容信息。可以用System.Net.WebRequest、webclient等类来处理。 2、对...
  • nihao87224
  • nihao87224
  • 2012年02月29日 14:23
  • 20910

详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等) 版本:v1.1 Crifan Li 摘要 本文主要介绍了抓取网站,...
  • u010288731
  • u010288731
  • 2016年06月12日 08:15
  • 372

巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人

作者:finallyliuyu (转载请注明作者:finallyliuyu,出处:博客园)   从事网络数据抓取采集从本科毕设算起已有一年多的时间,最开始是针对静态网页,写正则表达式,从网络上...
  • limfungsuen
  • limfungsuen
  • 2011年08月11日 09:43
  • 892

c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)

整理一下最近做的几个项目。总结几个用到的知识点和关键部分代码,以供大家学习交流。 1、爬虫抓取网页内容信息。可以用System.Net.WebRequest、webclient等类来处理。 2、对于某...
  • tekucong
  • tekucong
  • 2013年11月25日 16:09
  • 1610

C#爬取动态网页

一直在尝试用java来爬取网页,然而java总是无法处理动态网页,尤其是js产生的网页。而在如今的web2.0时代,许多的数据都涉及到js,比如新闻评论、微博等。java中htmlparser和htm...
  • tanzhangwen
  • tanzhangwen
  • 2012年12月05日 19:35
  • 2248

巧用C#webbrowser以及Application.DoEvents()实现采集动态网页的爬虫机器人

http://www.cnblogs.com/finallyliuyu/archive/2010/10/28/1863691.html 作者:finallyl...
  • yellowegg
  • yellowegg
  • 2015年06月25日 15:40
  • 469

ASP.NET动态网页设计案例教程PPT,C#版

  • 2009年04月24日 13:27
  • 6.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#动态成生并打开网页
举报原因:
原因补充:

(最多只允许输入30个字)