ASP.NET的Render方法
以前曾說(shuō)過(guò)用HttpModule來(lái)在Response前更改Cookie,今天遇到ASP.NET自做主張,把我辛苦轉(zhuǎn)換的漢字ꪻ這樣的表現(xiàn)形式,又轉(zhuǎn)成漢字,別說(shuō)是ASP.NET的Web控件,就是Html控件Ranat=server都會(huì)被它強(qiáng)行轉(zhuǎn)換成漢字輸出。
如果把頁(yè)面內(nèi)容一行行用Response寫出來(lái),那樣太累,而且容易出錯(cuò)。所以***的辦法是在ASP.NET的生成動(dòng)作完成之后,再進(jìn)行一次轉(zhuǎn)換,這樣ASP.NET就拿你沒有辦法了。
ASP.NET的所有生成動(dòng)作在Render方法中完成,那么我們就對(duì)Render方法進(jìn)行手術(shù):
- protected override void Render(HtmlTextWriter writer)
- {
- StringWriter sw = new StringWriter();
- HtmlTextWriter htmlw = new HtmlTextWriter(sw);
- //把頁(yè)面生成內(nèi)容拿出來(lái)
- base.Render(htmlw);
- htmlw.Flush();
- htmlw.Close();
- string pageContent = sw.ToString();
- //對(duì)內(nèi)容進(jìn)行修改
- pageContent = KillTheBugAndShit(pageContent);
- Response.Write(pageContent);
- //base.Render (writer);
- }
使用Render方法,也可以把頁(yè)面生成的內(nèi)容拿出來(lái)生成靜態(tài)頁(yè)面使用。
【編輯推薦】