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
¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top