Sinceramente non mi sono mai occupato di questi problemi esistenziali, ma ragionando, non credo che si possa recuperare l'html generato nell'evento load, ma solo nell'evento preposto, per esempio, Page_PreRender. Credo che sia lì che si possa intercettare l'html, manipolarlo e restituirlo al chiamante.
Se lo voglio fare in una classe esterna (come credo di aver capito), bisogna passare il controllo page ed intercettarne l'evento:
Allora, supponiamo che voglio recuperare l'innerHTML di un certo div (la faccio semplice), nell'evento load della pagina, istanzio la mia classe esterna:
Dim o As New PageWrapper(Me), ove passo l'oggetto page corrente. La classe sarà, per esempio:
codice:
Public Class PageWrapper
Private WithEvents page As Page
Public Sub New(ByVal page As page)
Me.page = page
End Sub
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles page.PreRender
Dim Html$ = ""
Dim stringWriter As StringWriter
Dim sourceCode As HtmlTextWriter
'catturo il codice HTML e lo salvo in una stringa
stringWriter = New StringWriter
sourceCode = New HtmlTextWriter(stringWriter)
page.RenderControl(sourceCode)
sourceCode.Flush()
Html = stringWriter.ToString
If Not sourceCode Is Nothing Then sourceCode.Close()
If Not stringWriter Is Nothing Then stringWriter.Close()
'manipolo html: voglio l'innerHTML di div1, per esempio
Dim p1, p2 As Integer
p1 = Html.IndexOf("<div id=""div1"">")
p2 = Html.IndexOf("</div>")
Dim result As String = Html.Substring(p1 + 15, p2 - (p1 + 15))
page.Response.Write(result)
page.Response.End()
End Sub
End Class
ps. se non è questo che volevi, mi dispiace,
ciao