我看到一些生成静态页的方式.
1.采用孟子E章的办法 ,在aspx页中写
  protected override void Render( HtmlTextWriter writer ) 
  { 
    System.IO.StringWriter html = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html); 
    base.Render(tw); 
    System.IO.StreamWriter sw; 
    sw = new System.IO.StreamWriter(Server.MapPath("a.htm"), false, System.Text.Encoding.Default); 
    sw.Write(html.ToString()); 
    sw.Close(); 
    tw.Close(); 
    Response.Write(html.ToString()); 
  }  
2.采用html模板,用变量替换的办法
我原来是使用1方法,但是我发现有问题了,我的主页A.html是静态页.也就是由B.aspx生成的A.html页.
现在A.html页要根据数据更新.就是当数据库中有一条数据更新了.A.html要马上生成.我以前是用在用户提交数据之后,使用window.open(B.aspx)在js中打开B.aspx生成的A.html页的,但是我发现window.open(B.aspx)不总是管用.而且我对js也不熟悉.怀疑它是否执行(因为我发现用户提交数据A.html有时候并没有更新)
头疼!
我想法这个过程移到后台来处理.也就是说能不能提交数据之后在后台调用一个方法.类似
WebFormA a=new WebFormA();
//...给a中的这个数据变量付值等等
string  Html=a.Render();//生成
SaveHTML()!!!
可以吗??
别跟我说aspx的无状态哦.我知道的,有没有可能了.重载render???

解决方案 »

  1.   

    使用window.open(B.aspx)在js中打开B.aspx生成的A.html页的,但是我发现window.open(B.aspx)不总是管用.而且我对js也不熟悉.怀疑它是否执行(因为我发现用户提交数据A.html有时候并没有更新) 
    ------------------
    在提交完成的页面中放一个框格inframe里面执行呀,弹出有大部分会被浏览器屏蔽你一把年纪了,前几年由不禁弹窗过渡到现在人人不关心弹窗你在干什么了.现在都不用弹窗,用IDV层了.
      

  2.   

    层都打错了.DIV.   另外,如果主页a.html是首页,用户添加东西更新的可能只是一小部分吧?建议那小部分用.js,你更新一个js文件.或者利用.js这样的文件结构使用动态调用那部分更新的.
      

  3.   

    ---
    在提交完成的页面中放一个框格inframe里面执行呀,弹出有大部分会被浏览器屏蔽 
    你一把年纪了,前几年由不禁弹窗过渡到现在人人不关心弹窗你在干什么了.现在都不用弹窗,用IDV层了.
    ---
    我可以改成使用iframe.src,但是也会.....div如何做到....要是在后台做到更好了
      

  4.   

    更新的地方非常多哦.我可不想满页面都是loading.....
      

  5.   

    我可以改成使用iframe.src,但是也会..... 
    -------------
    代码不要加if(!IspageLoad)事件中
    我觉得你应该根据实际情况进行开发.你需要更新a.htm为最新的内容,更新的内容有多少,频繁度如何?(如果很频繁,那你不应该整页生成静态)
    1\更新内容少,更新频繁
      比如某个区域需要经常更新,那里可以采用框架inframe放在那里,放个里面显示aspx文件,直接从数据库取得,
      同样,也可以用 <Script scr="news.aspx"></script>方式调用,news.aspx必须按javascript输出显示2\需要整页更新
      xmlhttp调用取得动态页面内容生成静态.  
      

  6.   

    winpcap捕获,然后保存为html文件,汗..也算P办法一个
    ps,估计你对c/c++也不属~
      

  7.   

    主要还是看你页面是什么页面.有一种高效的方法.以前asp经常用的.
    把B.aspx的所有代码使用"混合代码(asp那种)"的方法写在你的提交页里面.
    比如:string str="<tabel><tr><td>";sqlDatareader Rd=数据来源
    if(Rd.read())
    {
    str=+ Rd["Title"].tostring();
    }
    str=+ "</td></tr></table>;最后直接把str变量生成到a.htm文件上.优点:效率高,速度快,数据能提交,页面就能生成,防止各种读取不到而无法生成的情况.
    缺点:修改生成的页面时麻烦,第一次把内容全改成这样的格式时也很浪费时间.
      

  8.   

    优点:效率高,速度快,数据能提交,页面就能生成,防止各种读取不到而无法生成的情况. 
    缺点:修改生成的页面时麻烦,第一次把内容全改成这样的格式时也很浪费时间.--------------
    大佬,你说的不就是使用模板的方法吗?
    我想用第一种方法啊.  用  <Script scr="news.aspx" > </script >方式调用,news.aspx必须按javascript输出显示是个好东西.学习了,谢谢啊...