Manipular iframe desde codebehind. Inscrustar paginas web.

¿Como puedo incrustar una pagina web dentro de un Panel? Fue la pregunta… y la respuesta la arme rapidamente y posteandola aqui para que quede para la posteridad 😉

El control web Panel se renderiza en el cliente (lease en el navagador) en un control html div (es la magia ASP.NET), y en HTML tenemos un control para poder “llamar por underground” otro contenido o mejor dicho otra pagina.. el famoso tag iframe

 

Crando un iframe

Puedes crear un iframe escribiendo directamente el tag

image

Alli podriamos simplemente introducir el origen a cargar (propiedad src)

<iframe src="http://geeks.ms"/>

Ejemplo en vivo y en directo:

Aqui la imagen…
image

 

Pero que pasa si queremos manipular este control y sus propiedades desde el codebehind?

Aqui tendremos que convertilo en un html control del lado del servidor.. como? Asigando un identificador para referenciarlo y por supuesto agregando la propiedad runat=”server”
<iframe id="iframe1" runat="server" />
Y alli si lo tendremos disponible
image
 
Pero donde esta la propiedad src?
Si queremos asignar iframe1.src, no la tenemos disponible por tratarse de un HtmlGenericControl
image
Entonces debemos tratarlo como un atributo…
iframe1.Attributes.Add("src", "http://geeks.ms")
 
Tambien podremos manipularlo a la coleccion de atributos como cualquier otra collection tipo hashtable
image
Quedando:
iframe1.Attributes("src") = http://geeks.ms
 
 
 
Ya sabemos manipular nuestro iframe, pero como agregarlos a un control panel?
Si queremos realizarlo en tiempo de ejecucion, sabemos que el control Panel es un contenedor de controles por lo tengo
image
Debemos crear un control hijo del tipo del iframe (que es un HtmlGenericControl) y agregarlo a la coleccion de controles.
Dim iframe2 As New HtmlGenericControl("iframe")
iframe2.Attributes("src") = "http://geeks.ms"
Panel1.Controls.Add(iframe2)
 
Como veras al crear el control HTMLGenericControl utilice una sobrecarga del contructor donde enviamos el nombre del tag a crear o sino nos crea un control html span
 
Luego tendriamos que maipular alguna que otra propiedad para nuestras necesidades (width, height, style o especificando una class de css, etc)
 
Espero que les sirva de ayuda o guia
 

Enlaces:

 
 
 

9 comentarios sobre “Manipular iframe desde codebehind. Inscrustar paginas web.”

  1. Oye, este artículo está muy bien. Pero después de leerlo me surgió una duda, es lo que tendría que hacer para meter un archivo de código jsp dentro de un documento asp.net?

    O en ese caso qué tendría que utilizar?

    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *