none
ASP.NET首页怎么生成HTML静态格式网页 RRS feed

  • 问题

  • 最近一个客户要求首页生成静态格式网站,ASP.NET首页怎么生成HTML静态格式网页,而且更新数据时发生变化
    2009年8月3日 6:11

答案

  • 要是在网上搜索的话,我就不必在这里提问题了。主要是想比较实用的实例,搜的东西乱七八糟。

    • 已标记为答案 Love波波 2009年8月7日 2:40
    2009年8月7日 1:29

全部回复

  • 可以使用 HTML 模版,将动态部分通过关键字标注出来,生成时将这些关键字替换成指定的内容,内容发生变化时重新生成一次HTML。网上关于这方面的资料很多
    知识改变命运,奋斗成就人生!
    2009年8月3日 6:23
    版主
  • 你好,可以使用System.IO.StreamWriter类可以实现!
    jon.valett@gmail.com
    2009年8月3日 6:36
    版主
  • 你好,

    这种生成静态页面的网上有很多例子。你可以参考下面的试试。
    http://hi.baidu.com/widebright/blog/item/55332a383efb4624b9998f63.html


    Microsoft Online Community Support
    2009年8月4日 2:18
  • 这个方式很多。框架就可以解决此问题,URLMapping也可以实现,如果做得好可以用伪静态页。方式确实很多,可以看看。
    2009年8月4日 2:24
  • 静态网页就是一个文本文件。生成文本文件不是难事。
    做一个程序批量生成就可以了。
    做静态网站,你需要先规划好,哪些需要经常更新的,更新规则是什么
    【孟子E章】
    2009年8月4日 5:19
    版主
  • http://social.microsoft.com/Forums/zh-CN/295/thread/edb1feb1-7aed-46c8-85bd-18ea50e4c7bd

    这是怎么实现的
    怎么没有ASPX
    这属于静态的嘛?
    2009年8月5日 9:07
  • 这是 URL 重写
    知识改变命运,奋斗成就人生!
    2009年8月5日 9:12
    版主
  • 其实就是模板技术,通常做法是将动态内容用标签标示,然后生成静态页面时,将标签替换为实际内容。
    http://hi.baidu.com/2009ajun
    2009年8月5日 9:12
  • 最简单的方法是什么呢?能说的具体点吗?
    最好有代码
    谢谢!!

    2009年8月6日 2:35
  • 最简单的?
    如果你只是生产一个首页的静态页,使用HttpWebRequest请求那个页面。保存结果为htm就可以了

    这些方法网上都有很多代码。你搜索一下会出很多

    【孟子E章】
    2009年8月6日 5:00
    版主
  • 你好,最简单的就是用搜索引擎搜索示例!
    jon.valett@gmail.com
    2009年8月6日 17:21
    版主
  • 要是在网上搜索的话,我就不必在这里提问题了。主要是想比较实用的实例,搜的东西乱七八糟。

    • 已标记为答案 Love波波 2009年8月7日 2:40
    2009年8月7日 1:29
  • 这里有一个方法,供你参考一下:

    这个方法可以将.aspx输出的Html文件生成文件.

    1.自定义一个Response.Filter类,这里我命名为ResponseCatcher(其实也就是一个继承了Stream的类,后面有参考代码贴出,这个类用于捕捉 Asp.net的Html输出,并将输出保存到文件).
    2.在想要生成Html文件的aspx页面的Page_Load事件里加上:
       Response.Filter=new ResponseCatcher(Response.Filter,"index.htm");    //其中"index.html"为要输出的文件名.


    // **ResponseCatcher 类  源代码,只供参考,并没有考虑性能,安全方面的问题.  **

    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;
    /// <summary>
    /// Summary description for ResponseCatcher
    /// </summary>
    public class ResponseCatcher:Stream
    {
        private Stream myStream;  
        private StreamWriter sw;     //用于输出文件

     public ResponseCatcher(Stream _stream,string outputFileName )
     {
            myStream = _stream;  
            sw = new StreamWriter(HttpContext.Current.Server.MapPath(outputFileName));
     }


        public override bool CanRead
        {
            get
            {
                return true;
            }
        }

        public override bool CanSeek
        {
            get
            {
                return true;
            }
        }


        public override bool CanWrite
        {
            get { return false; }
        }

        public override long Length
        {
            get { return myStream.Length; }
        }

        public override long Position
        {
            get
            {
               return myStream.Position;
            }
            set
            {
                myStream.Position = value;
            }
        }


        public override void Flush()
        {
            sw.Flush();
            myStream.Flush();
        }

        public override long Seek(long offset, SeekOrigin origin)
        {
           return myStream.Seek(offset, origin);
        }


        public override void SetLength(long value)
        {
            myStream.SetLength(value);
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
          return  myStream.Read(buffer, offset, count);
        }


         public override void Write(byte[] buffer, int offset, int count)
        {
            string htmlString = System.Text.Encoding.Default.GetString(buffer);  //获取Aspx输出的Html 字符串
            sw.Write(htmlString); //将取到的Html 字符串写入文件
            myStream.Write(buffer, offset, count); // 写入到 myStream中,用于返回给Response作为 aspx页面的输出. 如果把这句去掉,打开Aspx页面时,只能看到空白页.
        }

        public override void Close()
        {
            sw.Close();  
            myStream.Close();
        }
    }

    2009年10月23日 6:30