Añadir enlace de estilo de objeto de página creada dinámicamente
-
26-09-2019 - |
Pregunta
Estoy creando un objeto de página y agregar un control a la misma para la impresión de los propósitos. El código funciona, sin embargo, no pueden encontrar una manera de añadir un enlace de hoja de estilo a la cabecera. En el código Pegué Estoy intentando añadir un enlace a la cabecera y luego agregar el control de cabecera de la página, pero esto provoca un error:
Solicitud no está disponible en este contexto System.Web.UI.Page.get_Request () 8.700.216 System.Web.UI.HtmlControls.HtmlHead.RenderChildren (HtmlTextWriter escritor) 83
Function getControlHtml() As String
Dim sw As New StringWriter
Dim tw As New HtmlTextWriter(sw)
Dim pg As New Page()
pg.EnableEventValidation = False
Dim cssLink As New HtmlLink
cssLink.Href = "~/css/StyleSheet.css"
cssLink.Attributes.Add("rel", "Stylesheet")
cssLink.Attributes.Add("type", "text/css")
'works without this code
Dim head As New HtmlHead
head.Controls.Add(cssLink)
pg.Controls.Add(head)
Dim frm As New HtmlForm
pg.Controls.Add(frm)
frm.Attributes.Add("runat", "server")
frm.Controls.Add(pnlMACForm)
pg.DesignerInitialize()
pg.RenderControl(tw) ' <--
Return sw.ToString()
End Function
Solución
Usted realmente no puede crear una página dinámica en la forma en que usted está pensando. Todo lo que estamos haciendo es crear el objeto de página, pero no lo han hecho a través de la tubería ASP.net.
Esto significa que el objeto de página no se ha establecido como el IHttpHandler
de la solicitud (y en consecuencia no se ha transmitido un HttpApplication
que contiene todos los objetos del contexto que necesita, como Request
y Response
), y llamando a cualquiera de la página métodos de ciclo de vida (como RenderControl
) van a fallar.
ASP.Net formularios web no tiene una manera fácil de hacer una página en una cadena. Creación de un objeto de página "sin ataduras" y agregar controles a que desafortunadamente no le llevará muy lejos. Si realmente necesita para hacer los controles fuera del ciclo de vida de la página, por alguna razón, es posible que pueda hacerlo por carga y renderizado .ascx , pero esto puede no ser lo suficientemente dinámico para sus necesidades.
¿Puedo pedir lo que estás tratando de hacer por conseguir el código HTML de estos controles?