我正在使用AJAX从HTTP处理程序中的服务器端加载用户控件。要做到这一点,我创建一个新的页面对象并执行用户控制服务器端生成原始的HTML,像这样:如何从HttpContext.Current获取当前的ASP.NET主题?
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()仅仅是返回2硬编码的HTML之间的一切功能评论,这实际上只是我的UserControl的HTML。
我遇到的问题是这些服务器控件中的一些需要ASP.NET主题支持。我发现了一种由页声明之后加入以下几行做到这一点:
page.Theme = "Theme3"
page.Controls.Add(New System.Web.UI.HtmlControls.HtmlHead())
这就像一个魅力与主题名称时硬编码。不过,我想从当前上下文中获取主题名称。我在网上看到的所有例子都要求你有一个页面对象以获得主题的名字。但是我从一个没有主题的新页面开始。
所以我的问题是是否有一种方法来从HttpContext中的某个地方加载主题名称,或者是通过AJAX从客户端传递主题名称来加载服务器端的唯一方法?
关于会话状态的主题是什么存储指定它,您使用的是默认的主题? – Mikhail 2012-01-28 20:05:24