日期:2014-05-18  浏览次数:20464 次

我想生成静态页,但是我不想用模板的方法.
我看到一些生成静态页的方式.
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???

------解决方案--------------------
我可以改成使用iframe.src,但是也会..... 
-------------
代码不要加if(!IspageLoad)事件中


我觉得你应该根据实际情况进行开发.

你需要更新a.htm为最新的内容,更新的内容有多少,频繁度如何?(如果很频繁,那你不应该整页生成静态)


1\更新内容少,更新频繁
比如某个区域需要经常更新,那里可以采用框架inframe放在那里,放个里面显示aspx文件,直接从数据库取得,
同样,也可以用 <Script scr="news.aspx"></script>方式调用,news.aspx必须按javascript输出显示

2\需要整页更新
xmlhttp调用取得动态页面内容生成静态.