ฉันใช้ AJAX เพื่อโหลดการควบคุมผู้ใช้จากฝั่งเซิร์ฟเวอร์ภายใน HTTP Handler ในการดำเนินการนี้ ฉันกำลังสร้างออบเจ็กต์หน้าใหม่และดำเนินการฝั่งเซิร์ฟเวอร์ควบคุมผู้ใช้เพื่อสร้าง 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 แบบฮาร์ดโค้ด 2 รายการ ซึ่งเป็นเพียง HTML ของ UserControl ของฉันเท่านั้น
ปัญหาที่ฉันมีคือการควบคุมเซิร์ฟเวอร์บางส่วนต้องการการสนับสนุนธีม ASP.NET ฉันพบวิธีดำเนินการโดยเพิ่มบรรทัดต่อไปนี้หลังการประกาศเพจ:
page.Theme = "Theme3"
page.Controls.Add(New System.Web.UI.HtmlControls.HtmlHead())
สิ่งนี้ใช้งานได้อย่างมีเสน่ห์เมื่อฮาร์ดโค้ดด้วยชื่อธีม อย่างไรก็ตาม ฉันต้องการรับชื่อธีมจากบริบทปัจจุบัน ตัวอย่างทั้งหมดที่ฉันเห็นทางออนไลน์กำหนดให้คุณต้องมีวัตถุหน้าเพื่อที่จะรับชื่อของธีม แต่ฉันกำลังจะเริ่มต้นด้วยหน้าใหม่ที่ไม่มีธีม
ดังนั้นคำถามของฉันคือมีวิธีโหลดชื่อธีมจากที่ไหนสักแห่งใน HttpContext หรือเป็นวิธีเดียวที่จะโหลดสิ่งนี้บนฝั่งเซิร์ฟเวอร์โดยส่งชื่อธีมจากไคลเอนต์ผ่าน AJAX