C#动态成生并打开网页

下面是通过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 >  

 

1: 删除原来存在的文件

2:读取模板页面

3:将模板也中的单词替换(Title,content,)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值