【发布时间】:2012-07-11 08:44:48
【问题描述】:
我正在尝试再次联系 asp.net 专家并希望得到答案。我真的被困在这里并寻求帮助。希望我的问题不会被否决,我可以纯粹从技术角度得到答案,而不是人们简单地对我的方法进行评判。
之前我发布的问题如下: asp.net convert asp.net page into Page variable
然后我查看了以下页面,但它仍然不适合我。
Load an ASP.NET 2.0 aspx page using System.Reflection?
在我的 Web 应用程序中,我希望能够在我的代码中的任何位置引用网页,例如“WebForm1.aspx”,并获得该页面上的控件列表。请从这个角度来看,不要过度分析。可能吗?
在我的页面变量 p 中,我似乎没有任何用于 WebForm1.aspx 的控件
这是我的代码。
请帮忙。
protected void Page_Load(object sender, EventArgs e)
{
string[] filePaths = Directory.GetFiles(Server.MapPath("~/"), "*.*", SearchOption.AllDirectories);
foreach (string filepath in filePaths)
{
if (filepath.EndsWith(".aspx"))
{
Response.Write(filepath + "<br/>");
string[] folders = filepath.Split('\\');
string filename = folders[folders.Count() - 1];
string fullpath = "~/" + filename;
Page p = BuildManager.CreateInstanceFromVirtualPath("~/"+fullpath, typeof(Page)) as Page;
List<String> controlList = new List<String>();
ResourceManager.AddControls(p.Controls, controlList);
foreach (string str in controlList)
{
Response.Write(str + "<br/>");
}
}
}
【问题讨论】:
-
应用是asp.net网站还是web应用?
-
网络应用程序.. 谢谢
-
你试过了吗,YourPageType p = BuildManager.CreateInstanceFromVirtualPath("~/webform1.aspx", typeof(YourPageType)) as YourPageType;
-
我不知道你的YourPageType是什么意思。我尝试了以下..但它没有工作。感谢您的反馈。 WebForm2 p = BuildManager.CreateInstanceFromVirtualPath("~/webform2.aspx", typeof(WebForm2)) as WebForm2;
-
Ingenu,你早期的帖子工作得很好......除了......我需要一个稍微不同的解决方案......有没有办法让页面没有类型转换为(默认)?再次感谢..