Aggiungi il link al foglio di stile oggetto pagina creata dinamicamente
-
26-09-2019 - |
Domanda
Sto creando un oggetto pagina e l'aggiunta di un controllo ad esso per scopi di stampa. Le opere di codice, ma non riesco a trovare un modo per aggiungere un collegamento foglio di stile per l'intestazione. Nel codice ho incollato sto cercando di aggiungere un link all'intestazione e quindi aggiungere il controllo di intestazione alla pagina, ma questo provoca un errore:
Richiesta non è disponibile in questo contesto System.Web.UI.Page.get_Request () 8.700.216 System.Web.UI.HtmlControls.HtmlHead.RenderChildren (HtmlTextWriter scrittore) 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
Soluzione
È davvero non si può creare una pagina in modo dinamico nel modo in cui stai pensando. Tutto quello che stai facendo è la creazione dell'oggetto Page, ma non lo hanno fatto attraverso il gasdotto ASP.net.
Ciò significa che l'oggetto pagina non è stato impostato come il IHttpHandler
per la richiesta (e di conseguenza non è stato consegnato un HttpApplication
contenente tutti gli oggetti del contesto di cui ha bisogno, come Request
e Response
), e chiamare qualsiasi della pagina metodi del ciclo di vita (come RenderControl
) stanno andando a fallire.
ASP.Net webforms non hai un modo semplice di rendere una pagina in una stringa. Creazione di un oggetto pagina "distaccato" e l'aggiunta di controlli ad esso non sarà purtroppo porterà molto lontano. Se si ha realmente bisogno di rendere i controlli al di fuori della pagina del ciclo di vita per qualche motivo, si può essere in grado di farlo da di carico e di rendering file ascx , ma questo potrebbe non essere sufficiente dinamica per le vostre esigenze.
Posso chiedere che cosa si sta cercando di fare per ottenere il codice HTML da questi controlli?