我需要修改一個aspx(不是物理上的,但改變內存中的內容)的內容的原因是因爲我有一些自定義標籤需要解析到正確的數據,然後整個aspx被處理HttpHandler的。如何在處理程序處理它之前以編程方式修改aspx文件內容?
有沒有辦法呢?
我需要修改一個aspx(不是物理上的,但改變內存中的內容)的內容的原因是因爲我有一些自定義標籤需要解析到正確的數據,然後整個aspx被處理HttpHandler的。如何在處理程序處理它之前以編程方式修改aspx文件內容?
有沒有辦法呢?
您可以使用響應過濾器(HttpFilter)並基本上在響應形成之後,在調用您的過濾器(它是流後代)之前修改內容,並且可以根據需要對其進行修改。在HttpModule,Init方法中,你需要安裝HttpFilter(Response.Filter),它將被調用該請求。
這裏是一個很好的文章:
http://aspnetresources.com/articles/HttpFilters
UPDATE: 也許這是XY Problem的情況下,你可以用簡單的服務器控件將正確顯示這些自定義標籤解決您的問題。
可以使用渲染事件
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
Dim sw As New System.IO.StringWriter
Dim hw As New HtmlTextWriter(sw)
MyBase.Render(hw)
Dim html As String = sw.ToString()
' html = html.Replace() etc to change your html code in here
writer.Write(html)
End Sub
編輯我看到你想要asp.net處理ASPX,也許FileLevelPageControlBuilder類是利用
謝謝 - 但我需要在文檔被aspx處理程序處理之前解析文檔 - 所以基本上它早於頁面事件。 – 2012-04-18 18:42:15
已編輯我上面的回覆... – 2012-04-18 19:16:38
由於動態前注入標記 - 但我需要在aspx處理程序處理文檔之前解析文檔 - 任何sugestions? – 2012-04-18 18:41:35
我不明白,文件是什麼意思?在處理請求之前沒有任何東西需要解析。 – 2012-04-18 18:44:19
也許他希望將ASPX文件的內容看作一個字符串,對其進行修改,然後讓它通過ASP.NET管道流動,以解釋爲實際的ASPX頁面。 – 2012-04-18 18:57:15