Добавить стильютную ссылку на динамически созданный объект страницы
-
26-09-2019 - |
Вопрос
Я создаю объект страницы и добавляя его контроль в целях печати. Код работает, однако не могу найти способ добавить ссылку стилей на заголовок. В коде я вставил, я пытаюсь добавить ссылку на заголовок, а затем добавить элемент управления заголовка на страницу, но это вызывает ошибку:
Запрос не доступен в этой контекстной системе .Web.ui.page.get_request () +8700216 System.web.ui.htmlcontrols.htmlhead.renderchildrens (htmltextwriter писатель) +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
Решение
Вы действительно не можете динамически создавать страницу так, как вы думаете. Все, что вы делаете, - это создание объекта страницы, но вы не сделали его через трубопровод ASP.NET.
Это означает, что объект страницы не был установлен как IHttpHandler
по запросу (и, следовательно, не было передано HttpApplication
Содержащие все необходимые им объекты контекста, как Request
а также Response
), и вызывая любой из методов жизненного цикла страницы (например, RenderControl
) собираемся потерпеть неудачу.
Webforms asp.net не имеет простого способа рендеринга страницы в строку. Создание объекта «Неопределенное» объект страницы и добавление элементов управления к нему, к сожалению, не ведет вас очень далеко. Если вам действительно нужно рендерировать элементы управления за пределами жизненного цикла страницы, вы можете сделать это Загрузка и рендеринг файлов .ascx, но это может не быть достаточно динамично для ваших нужд.
Могу ли я спросить, что вы пытаетесь сделать, получая HTML из этих элементов управления?