¿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
Alli podriamos simplemente introducir el origen a cargar (propiedad src)
<iframe src="http://geeks.ms"/>
Ejemplo en vivo y en directo:
Aqui la imagen...
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
Pero donde esta la propiedad src?Si queremos asignar iframe1.src, no la tenemos disponible por tratarse de un
HtmlGenericControl
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
Quedando:
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
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)
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:
Comparte este post: