ATENCIÓN: este contenido tiene más de 2 años de antigüedad y, debido a su temática, podría contener información desactualizada o inexacta en la actualidad.
Pueden existir ocasiones en las que la salida que nos devuelve una página ASPX no es de nuestro agrado. Si queremos modificar de algún modo, el HTML puro y duro que devuelve una página podemos sobrescribir el método Render de la página y ahí actuar a voluntad sobre el HTML generado.
Por ejemplo, imaginemos que queremos que todas nuestras páginas, automáticamente, lleven una nota de copyright justo al final. Hay muchas formas de conseguirlo (y muchas más sencillas), pero como ejemplo nos puede servir. Lo que podemos hacer es capturar el renderizado de la página y modificar el HTML devuelto.
Vamos a hacerlo para una sola página. Entonces, para sobrescribir el método Render, el código en VB sería así:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim sw As New StringWriter
Dim htmlsw As New System.Web.UI.HtmlTextWriter(sw)
'Se renderiza la página
MyBase.Render(htmlsw)
'Se recupera el HTML
Dim html As String
html = sw.ToString()
'Ahora se localiza el final de la página
Dim pos As Integer
pos = html.LastIndexOf("")
'y se inserta un copyright
If (pos >= 0) Then
html = html.Insert(pos - 1, "(c) Mi empresa 2014")
End If
'Ahora se escribe a la salida de la página, representada por el parámetro HtmltextWriter
writer.Write(html)
End Sub
Es decir, el primer bloque hace que la página se renderice en nuestro propio "stream" en lugar de en el stream por defecto. Después lo transformamos en una cadena de texto para poder trabajar directamente sobre ella. Usando expresiones regulares podemos hacer lo que queramos sobre este HTML, lo que nos da una potencia increíble, aunque hay que tener cuidado de no tocar nada que haga que la página deje de funcionar.
En nuestro caso de ejemplo simplemente buscamos en dónde está el final del cuerpo de la página y metemos justo antes una nota de copyright.
Finalmente hay que escribir el contenido de la cadena al stream que ASP.NET se encarga de enviar al navegador del usuario, que es el que se nos pasa como parámetro a este método.
Con eso hemos modificado al vuelo nuestra página.
Fecha de publicación: