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
È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top