【发布时间】:2009-06-27 00:36:22
【问题描述】:
假设我有两个网络表单,A.aspx 和 B.aspx,其中 B.aspx 包含一些简单的网络控件,例如文本框和按钮。
我正在尝试执行以下操作:
当请求 A.aspx 时, 我想动态调用 B.aspx 并将其加载到内存中,并输出 B.aspx 中包含的所有控件的详细信息。
这是我在 A.aspx 的代码隐藏中尝试的:
var compiledType = BuildManager.GetCompiledType("~/b.aspx");
if (compiledType != null)
{
var pageB = (Page)Activator.CreateInstance(compiledType);
}
foreach (var control in pageB.Controls)
{
//output some details for each control, like it's name and type...
}
当我尝试上面的代码时,pageB 的控件集合始终为空。
关于如何让它发挥作用的任何想法?
其他一些重要细节:
- 两个 web 表单都使用母版页(因此 b.aspx 中的 web 控件实际上放置在“内容”标签中)
- 我也尝试过使用BuildManager.CreateInstanceFromVirtualPath。不走运。
【问题讨论】:
-
为什么要访问已执行页面的控制集合?
标签: c# asp.net dynamic webforms