添加样式表链接到动态创建的页面对象
-
26-09-2019 - |
题
我创建一个Page对象并添加控制到它用于打印目的。代码工作,但我不能找到一种方法,样式表链接添加到头部。在代码我粘贴我试图将链接添加到报头,然后添加报头控制到页面,但是这将导致错误:
请求是在此上下文中可用的 System.Web.UI.Page.get_Request()8700216 System.Web.UI.HtmlControls.HtmlHead.RenderChildren(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
解决方案
您真的不能动态的方式,你想创建一个页面。所有你正在做的是创建Page对象,但是你有没有通过ASP.net管道做了。
这意味着页面对象没有被设置为IHttpHandler
为请求(并且因此没有被交给含有HttpApplication
所有的上下文对象需要,像Request
和Response
),和调用任何页面生命周期方法(如RenderControl
)将要失败。
ASP.Net Web表单没有呈现页面为一个字符串的简单方法。创建“独立的”页对象,并增加它的控制会很遗憾不会导致你很远。如果你真的需要在页面生命周期由于某种原因之外渲染控制,你可以通过的加载和渲染的.ascx文件,但这可能不适合你的需求是动态的,就够了。
我可以问你想从这些控件得到HTML做什么?
不隶属于 StackOverflow