点击这里给我发消息 点击这里给我发消息

ASP.NET生成静态HTML源码示例(C#)

添加时间:2013-12-6
    相关阅读: 网页 ASP ASP.NET 模板 页面 HTML Access

tohtml.cs 【生成静态页面核心类】:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Net;
using System.Text;
using System.IO;
namespace stroper
{
    public class tohtml
    {
        public tohtml()
        {
       
        }
        /// <summary>
        /// 生成静态网页
        /// </summary>
        /// <param name="template_url">模板相对路径</param>
        /// <param name="Come_url">生成静态页面的相对路径</param>
        /// <param name="encode">页面编码</param>
        /// <param name="tags">静态模板标签</param>
        /// <param name="chg_tags">替换标签的内容</param>
        public string chg_html(string template_url,string Come_url,string encode,string[] tags,string[] chg_tags)
        {
            //初始化html字节流
            string init_stream = readsr(System.Web.HttpContext.Current.Server.MapPath(template_url), encode);
            //生成文件名
            string fileName=get_filename();
            //完成html字节流
            string ok_streamstr = chg_tag(tags, chg_tags, init_stream);
            //生成存放html的文件夹
            fileoper files = new fileoper();
            files.CreateFolder(Come_url);
            //生成静态页面
            bool okout = outhtml(System.Web.HttpContext.Current.Server.MapPath(Come_url)+"\\" + fileName, encode, ok_streamstr);
            //判断生成成功与失败
            if (okout == true)
            {
                return System.Web.HttpContext.Current.Server.MapPath(Come_url) + "\\" + fileName;
            }
            else
            {
                return "生成失败";
            }
        }
        /// <summary>
        /// 读取文件字节流
        /// </summary>
        /// <param name="template_url">模板相对路径</param>
        /// <param name="encode">页面编码</param>
        /// <returns>template静态模板的html字符串</returns>
        private string readsr(string template_url, string encode)
        {
            Encoding code = Encoding.GetEncoding(encode);
            StreamReader sr = null;
            string str = null;
            //读取
            try
            {
                sr = new StreamReader(template_url, code);
                str = sr.ReadToEnd();
                return str;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sr.Close();
            }
           
        }
        /// <summary>
        /// 生成静态页面的文件名
        /// </summary>
        /// <returns></returns>
        private string get_filename()
        {
            //Random ra = new Random(10);
            //string rnd=ra.Next(1, 999).ToString();
            long tick = DateTime.Now.Ticks;
            Random ra = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            string rnd = ra.Next(1, 999).ToString();
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") +"-"+ rnd + ".htm";
            return fileName;
        }
        /// <summary>
        /// 模板的$标志替换
        /// </summary>
        /// <param name="tags">静态模板标签</param>
        /// <param name="chg_tags">替换标签的内容</param>
        /// <param name="streamstr">template静态模板的html字符串</param>
        /// <returns></returns>
        private string chg_tag(string[] tags,string[] chg_tags,string streamstr)
        {
            //str = str.Replace("$title$", txtTitle.Text);//替换Title
            //str = str.Replace("$content$", txtContent.Text);//替换content
            int i=0;
            for (i = 0; i <= tags.Length-1; i++)
            {
                streamstr = streamstr.Replace(tags, chg_tags[i]);
            }
            return streamstr;
        }
        /// <summary>
        /// 生成静态页面
        /// </summary>
        /// <param name="template_url">模板物理地址</param>
        /// <param name="Come_url">生成静态页面的相对路径</param>
        /// <param name="encode">页面编码</param>
        /// <param name="outhtmlstr">输出的html字符串</param>
        /// <returns></returns>
        private bool outhtml(string Come_url, string encode, string outhtmlstr)
        {
            StreamWriter sw = null;
            Encoding code = Encoding.GetEncoding(encode);
           
            try
            {
                sw = new StreamWriter(Come_url, false, code);
                sw.Write(outhtmlstr);
                sw.Flush();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sw.Close();
               
            }
        }
    }
}

fileoper.cs [文件处理类]:
using System;
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;
namespace stroper
{
    public class fileoper
    {
        /**/
        ///
        /// 在根目录下创建文件夹
        ///
        /// 要创建的文件路径
        public void CreateFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = System.Web.HttpContext.Current.Server.MapPath
                    (FolderPathName).ToString();
                    if (!Directory.Exists(CreatePath))
                    {
                        Directory.CreateDirectory(CreatePath);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }
        /**/
        ///
        /// 删除一个文件夹下面的字文件夹和文件
        ///
        ///
        public void DeleteChildFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = System.Web.HttpContext.Current.Server.MapPath
                    (FolderPathName).ToString();
                    if (Directory.Exists(CreatePath))
                    {
                        Directory.Delete(CreatePath, true);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }
        /**/
        ///
        /// 删除一个文件
        ///
        ///
        public void DeleteFile(string FilePathName)
        {
            try
            {
                FileInfo DeleFile = new FileInfo(System.Web.HttpContext.Current.Server.MapPath
                (FilePathName).ToString());
                DeleFile.Delete();
            }
            catch
            {
            }
        }
        public void CreateFile(string FilePathName)
        {
            try
            {
                //创建文件夹
                string[] strPath = FilePathName.Split('/');
                CreateFolder(FilePathName.Replace("/" + strPath[strPath.Length - 1].ToString(), "")); //创建文件
                FileInfo CreateFile = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(FilePathName).ToString()); //创建文件
                if (!CreateFile.Exists)
                {
                    FileStream FS = CreateFile.Create();
                    FS.Close();
                }
            }
            catch
            {
            }
        }
        /**/
        ///
        /// 删除整个文件夹及其字文件夹和文件
        ///
        ///
        public void DeleParentFolder(string FolderPathName)
        {
            try
            {
                DirectoryInfo DelFolder = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath
                (FolderPathName).ToString());
                if (DelFolder.Exists)
                {
                    DelFolder.Delete();
                }
            }
            catch
            {
            }
        }
        /**/
        ///
        /// 在文件里追加内容
        ///
        ///
        public void ReWriteReadinnerText(string FilePathName, string WriteWord)
        {
            try
            {
                //建立文件夹和文件
                //CreateFolder(FilePathName);
                CreateFile(FilePathName);
                //得到原来文件的内容
                FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath
                (FilePathName).ToString(), FileMode.Open, FileAccess.ReadWrite);
                StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                string OldString = FileReadWord.ReadToEnd().ToString();
                OldString = OldString + WriteWord;
                //把新的内容重新写入
                StreamWriter FileWrite = new StreamWriter(FileRead, System.Text.Encoding.Default);
                FileWrite.Write(WriteWord);
                //关闭
                FileWrite.Close();
                FileReadWord.Close();
                FileRead.Close();
            }
            catch
            {
                throw;
            }
        }
        /**/
        ///
        /// 在文件里追加内容
        ///
        ///
        public string ReaderFileData(string FilePathName)
        {
            try
            {
                FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath
                (FilePathName).ToString(), FileMode.Open, FileAccess.Read);
                StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                string TxtString = FileReadWord.ReadToEnd().ToString();
                //关闭
                FileReadWord.Close();
                FileRead.Close();
                return TxtString;
            }
            catch
            {
                throw;
            }
        }
        /**/
        ///
        /// 读取文件夹的文件
        ///
        ///
        ///
        public DirectoryInfo checkValidSessionPath(string FilePathName)
        {
            try
            {
                DirectoryInfo MainDir = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath
                (FilePathName));
                return MainDir;
            }
            catch
            {
                throw;
            }
        }
    }
}

页面调用:
protected void Button1_Click(object sender, EventArgs e)
    {
        string[] a=new string[]{"$title$","$content$"};
        string[] b = new string[] { txtTitle.Text, txtContent.Text };
        tohtml myhtml = new tohtml();
        string htmpath=myhtml.chg_html("template/template.htm","htm","gb2312",a,b);
        Response.Write(htmpath);
    }
[i]

 

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册