Ich verwende die BuildManager-Klasse zum Laden einer dynamisch generierten ASPX-Datei. Beachten Sie, dass sie keine entsprechende CS-Datei enthält.Verwenden der Build-Manager-Klasse zum Laden von ASPX-Dateien und zum Füllen der Steuerelemente
Mit folgendem Code kann ich die aspx-Datei laden, ich bin sogar in der Lage, die Kontrollsammlung der dynamisch erstellten aspx-Datei zu durchlaufen, aber wenn ich den Steuerelementen Werte zuweisen, werden sie nicht angezeigt. Wenn ich zum Beispiel den Wert "Dummy" an das TextBox-Steuerelement der aspx-Seite binde, bleibt das Textfeld leer.
Hier ist der Code, den ich
protected void Page_Load(object sender, EventArgs e) { LoadPage("~/Demo.aspx"); } public static void LoadPage(string pagePath) { // get the compiled type of referenced path Type type = BuildManager.GetCompiledType(pagePath); // if type is null, could not determine page type if (type == null) throw new ApplicationException("Page " + pagePath + " not found"); // cast page object (could also cast an interface instance as well) // in this example, ASP220Page is a custom base page System.Web.UI.Page pageView = (System.Web.UI.Page)Activator.CreateInstance(type); // call page title pageView.Title = "Dynamically loaded page..."; // call custom property of ASP220Page //pageView.InternalControls.Add( // new LiteralControl("
Served dynamically...")); // process the request with updated object ((IHttpHandler)pageView).ProcessRequest(HttpContext.Current); LoadDataInDynamicPage(pageView); } private static void LoadDataInDynamicPage(Page prvPage) { foreach (Control ctrl in prvPage.Controls) { //Find Form Control if (ctrl.ID != null) { if (ctrl.ID.Equals("form1")) { AllFormsClass cls = new AllFormsClass(); DataSet ds = cls.GetConditionalData("1"); foreach (Control ctr in ctrl.Controls) { if (ctr is TextBox) { if (ctr.ID.Contains("_M")) { TextBox drpControl = (TextBox)ctr; drpControl.Text = ds.Tables[0].Rows[0][ctr.ID].ToString(); } else if (ctr.ID.Contains("_O")) { TextBox drpControl = (TextBox)ctr; drpControl.Text = ds.Tables[1].Rows[0][ctr.ID].ToString(); } } } } } } }