2012-04-18 3 views
0

Причина, по которой мне необходимо изменить содержимое aspx (не физически, а изменить содержимое в памяти), состоит в том, что есть определенные пользовательские теги, которые я создал, нужно разобрать на правильные данные до того, как весь aspx будет обработан HttpHandler.Как я могу программно изменить содержимое файла aspx до того, как обработчик обработает его?

Есть ли способ для этого?

ответ

0

Вы можете использовать фильтры ответов (HttpFilter) и изменять контент «на лету», в основном после формирования ответа, до того, как EndRequest будет вызван ваш фильтр (это потоковый потомок), и вы можете изменить его по своему усмотрению. В методе HttpModule, Init вы должны установить HttpFilter (Response.Filter), и он будет вызван для этого запроса.

Вот хорошая статья:

http://aspnetresources.com/articles/HttpFilters

UPDATE: Может быть, это случай XY Problem, и вы можете решить вашу проблему с простым управлением сервера, который будет оказывать эти пользовательские теги правильно.

+0

спасибо - но мне нужно проанализировать документ до того, как он обработает обработчик aspx - любые sugestions? –

+0

Я не понимаю, что вы подразумеваете под документом? Перед обработкой запроса нечего анализировать. –

+0

Вероятно, он хочет видеть содержимое файла ASPX как одну строку, изменять его и затем пропускать через конвейер ASP.NET для интерпретации как фактической страницы ASPX. –

0

вы можете использовать Рендер события

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 

EDIT я вижу, что вы хотите, чтобы ввести метку динамически, прежде чем asp.net обрабатывает ASPX, может быть, FileLevelPageControlBuilder класса использования

+0

спасибо - но мне нужно разобрать документ до того, как он обработает обработчик aspx - так что в основном это намного раньше, чем события страницы. –

+0

отредактировали мой ответ выше ... –