Добавить стильютную ссылку на динамически созданный объект страницы

StackOverflow https://stackoverflow.com/questions/3833008

Вопрос

Я создаю объект страницы и добавляя его контроль в целях печати. Код работает, однако не могу найти способ добавить ссылку стилей на заголовок. В коде я вставил, я пытаюсь добавить ссылку на заголовок, а затем добавить элемент управления заголовка на страницу, но это вызывает ошибку:

Запрос не доступен в этой контекстной системе .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 из этих элементов управления?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top