【发布时间】:2012-02-21 04:43:21
【问题描述】:
我正在使用 AJAX 从 HTTP 处理程序中的服务器端加载用户控件。为此,我正在创建一个新的页面对象并执行用户控制服务器端以生成原始 HTML,如下所示:
Dim page As New Page()
Dim frm As New HtmlForm
Dim commentTag As String = "CaptureText"
Dim viewControl As UserControl = CType(page.LoadControl(VirtualPathUtility.ToAbsolute(String.Format("~/Help/{0}.ascx",Topic))), UserControl)
page.Controls.Add(frm)
frm.Controls.Add(New LiteralControl(String.Format("<!-- {0} -->", commentTag)))
frm.Controls.Add(viewControl)
frm.Controls.Add(New LiteralControl(String.Format("<!-- /{0} -->", commentTag)))
Dim writer As New StringWriter()
context.Server.Execute(page, writer, False)
context.Response.ContentType = "text/html"
context.Response.Write(GetContents(writer.ToString, commentTag))
GetContents() 只是一个函数,它返回两个硬编码 HTML cmets 之间的所有内容,这实际上只是我的 UserControl 的 HTML。
我遇到的问题是其中一些服务器控件需要 ASP.NET 主题支持。我找到了一种方法,方法是在页面声明后添加以下行:
page.Theme = "Theme3"
page.Controls.Add(New System.Web.UI.HtmlControls.HtmlHead())
当使用主题名称进行硬编码时,这就像一个魅力。但是,我想从当前上下文中获取主题名称。我在网上看到的所有示例都要求您拥有一个页面对象才能获取主题的名称。但我从一个没有主题的新页面开始。
所以我的问题是,是否有办法从 HttpContext 中的某处加载主题名称,或者是通过 AJAX 从客户端传递主题名称来在服务器端加载主题名称的唯一方法?
【问题讨论】:
-
在 Session 状态下存储 Theme 怎么样?