2010-09-12 60 views

回答

1

您可以使用HttpModule來做到這一點。這處於管道中,可以進行預處理和後處理。

例如,看看這個whitespaceremover

+1

對於其他人發現這一點:雖然這是一個有效的例子*請*不實際使用鏈接的模塊......它確實弊大於利,並保存*非常*因爲你應該*傳遞頁面gzipped,所以帶寬很小:) – 2010-09-12 09:55:07

1

除了HttpModules,您還可以重寫'Render'方法(或者在basepage中執行此操作以使其可重用)。

protected override void Render(HtmlTextWriter writer) 
{ 
    StringWriter stringWriter = new StringWriter(); 
    HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); 

    base.Render(htmlWriter); 

    string html = stringWriter.ToString(); 

    // do stuff with the html 

    writer.Write(html); 
} 
1

有很多選擇,哪一個套房在很大程度上取決於實際目標是什麼。

  1. 處理頁面的PreRender事件並調整您希望在此事件中使用的任何元素。理想情況下,您可以將其放入所有需要此處理的頁面繼承的基類中。這使您可以訪問實際的頁面模型和控制樹。
  2. 設置一個過濾器,可以讓您直接訪問響應流。您可以通過兩種方式實現它,可以作爲單獨的HttpModule來安裝過濾器,也可以直接從Global.asax安裝過濾器。您選擇哪條路線取決於您需要如何重複使用,HttpModule是最可重用的。

這裏是一個很好的文章Modifying the HTTP Response Using Filters