gpt4 book ai didi

c# - 使用构建管理器类加载 ASPX 文件并填充其控件

转载 作者:太空狗 更新时间:2023-10-29 21:47:45 25 4
gpt4 key购买 nike

我正在使用 BuildManager 类加载动态生成的 ASPX 文件,请注意它没有相应的 .cs 文件。

使用以下代码我能够加载 aspx 文件,我什至能够遍历动态创建的 aspx 文件的控件集合,但是当我为控件赋值时它们没有显示出来。例如,如果我将值“Dummy”绑定(bind)到 aspx 页面的 TextBox 控件,文本框将保持为空。

这是我使用的代码

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(); } } } } } } }

最佳答案

我看到你的部分代码来自 How To Dynamically Load A Page For Processing .也请阅读评论 one迈克。

反转这个:

((IHttpHandler)pageView).ProcessRequest(HttpContext.Current);
LoadDataInDynamicPage(pageView);

对此:

LoadDataInDynamicPage(pageView);
((IHttpHandler)pageView).ProcessRequest(HttpContext.Current);

在这种情况下,改变调用顺序确实会改变我认为的最终结果。 Commutativity property 的倒数. :)

关于c# - 使用构建管理器类加载 ASPX 文件并填充其控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com