asp.net 生成静态网页(备忘)

本文介绍了一个使用ASP.NET编写的HTML文件生成器,该生成器可以创建并更新HTML文件,支持从模板替换内容到指定文件中。文章提供了完整的代码示例及调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Data;
using System.Configuration;
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.IO;
using System.Text;

/// <summary>
/// WriteFile 的摘要说明
/// </summary>
public class WriteFile
{
 
public WriteFile()
 {
 
 }
    
public static bool createHtml(string[] strnewsHtml,string[] stroldHtml,string strModeFilePath,string strPath)
    {
        
bool flag = false;
        StreamReader sr 
= null;
        StreamWriter sw 
= null;
        
string filepath = HttpContext.Current.Server.MapPath(strModeFilePath);
        Encoding code 
= Encoding.GetEncoding("gb2312");
        
string s = string.Empty;
        
try
        {
            sr 
= new StreamReader(filepath,code);
            s 
= sr.ReadToEnd();
        }
        
catch (Exception ex)
        {
            
throw ex;
        }
        
finally
        {
            sr.Close();
        }
        
try
        {
            
for (int i = 0; i < strnewsHtml.Length; i++)
            {
                s 
= s.Replace(stroldHtml[i], strnewsHtml[i]);
            }
            sw 
= new StreamWriter(HttpContext.Current.Server.MapPath(strPath), false, code);
            sw.Write(s);
            flag 
= true;
        }
        
catch (Exception ex)
        {
            flag 
= false;
            
throw ex;
        }
        
finally
        {
            sw.Flush();
            sw.Close();
        }
        
return flag;
    }
    
public static bool UpdateHtmlPage(string[] strNewsHtml, string[] strStartHtml, string[] strEndHtml, string strHtml)
    {
        
bool Flage = false;
        StreamReader ReaderFile 
= null;
        StreamWriter WrirteFile 
= null;
        
string FilePath = HttpContext.Current.Server.MapPath(strHtml);
        Encoding Code 
= Encoding.GetEncoding("gb2312");
        
string strFile = string.Empty;
        
try
        {
            ReaderFile 
= new StreamReader(FilePath, Code);
            strFile 
= ReaderFile.ReadToEnd();

        }
        
catch (Exception ex)
        {
            
throw ex;
        }
        
finally
        {
            ReaderFile.Close();
        }
        
try
        {
            
int intLengTh = strNewsHtml.Length;
            
for (int i = 0; i < intLengTh; i++)
            {
                
int intStart = strFile.IndexOf(strStartHtml[i]) + strStartHtml[i].Length;
                
int intEnd = strFile.IndexOf(strEndHtml[i]);
                
string strOldHtml = strFile.Substring(intStart, intEnd - intStart);
                strFile 
= strFile.Replace(strOldHtml, strNewsHtml[i]);
            }
            WrirteFile 
= new StreamWriter(FilePath, false, Code);
            WrirteFile.Write(strFile);
            Flage 
= true;
        }
        
catch (Exception ex)
        {
            
throw ex;
        }
        
finally
        {

            WrirteFile.Flush();
            WrirteFile.Close();
        }
        
return Flage;
    }

}

调用公共类:
----------------------------------------------------------------------------
protected void Button2_Click(object sender, EventArgs e)
    {
        
string NewsTitle = this.TextBox1.Text;
        
string NewsKindName = this.DropDownList1.SelectedItem.Text;
        
string NewsBody = this.WebEditor1.Text;
        DateTime PubTime 
= DateTime.Now;
        
string UserName = Session["UserName"].ToString();
        Response.Write(NewsKindName);
        
string[] strNewsHtml = new string[] { NewsTitle, NewsKindName, NewsBody, PubTime.ToString(), UserName };
        
string[] strOldHtml = new string[] { "@Title""@NewsKInd""@NewsBody""@PubTime""@UserName" };
        
string strFileName = DateTime.Now.ToString("ddhhmmss"+ ".html";
        
string strFilePath = string.Format("NewsHtml/{0}", strFileName);
        
try
        {
            
if (WriteFile.createHtml(strNewsHtml, strOldHtml, "mode.htm", strFilePath))
            {
                
this.Label1.Text = "生成成功!";
            }
            
else
            {
                
this.Label1.Text = "生成失败!";
            }

        }
        
catch
        {
            
this.Label1.Text = "生成失败!";
        }
    }

  
protected void Button3_Click(object sender, EventArgs e)
    {
        
string[] strNewsHtml=new string[]{"到此一游!"};
        
string[] strStartHtml=new string[]{"<!-- start -->"};
        
string[] strEndHtml=new string[]{"<!--end-->"};
        
if (WriteFile.UpdateHtmlPage(strNewsHtml, strStartHtml, strEndHtml, "NewsHtml/02011139.html"))
        {
            
this.Label1.Text="生成首页成功!";
        }
        
else
        {
            
this.Label1.Text="生成首页失败!";
        }
    }

新建文件夹NewsHtml,生成html文件放在里面
-----------------------------------------------------------

增加一个模板文件

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    
<title>无标题页</title>
</head>
<body>
    
<table border="1" cellpadding="0" cellspacing="0" style="width: 522px; height: 338px">
        
<tr>
            
<td align="center" colspan="2">
                @Title
</td>
        
</tr>
        
<tr>
            
<td align="center" colspan="2">
                发布人:@UserName 
&nbsp; &nbsp; 发布时间:@PubTime &nbsp; &nbsp;&nbsp; 新闻类别:@NewsKInd</td>
        
</tr>
        
<tr>
            
<td colspan="2">
                @NewsBody
</td></tr><tr>
  
<td style="WIDTH: 100px"> 
</td><td style="WIDTH: 100px" >
</td></tr></table></body></html>


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值