-3

可能重复:
使用 System.Reflection 加载 ASP.NET 2.0 aspx 页面?

在以下代码中,我遍历我的项目并获取 .aspx 页面的文件路径。如何将它们转换为 Page 变量。我已经尝试了以下代码,但它不起作用。我收到以下错误消息

Invalid cast from 'System.String' to 'System.Web.UI.Page'.

请帮我。

谢谢

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/>");

            Page page = (Page)Convert.ChangeType(filepath, typeof(Page));

        }
    }


}
4

1 回答 1

1

根据您的最后一条评论“我正在尝试浏览项目中的所有页面并通过每个页面识别标签和按钮控件。”。所以我认为你需要的是:

  1. 创建一些所有页面都继承的基类
  2. 在该基类中放置一些逻辑(可能会覆盖 PreRender,不清楚您想对控件做什么)并在这些页面上找到所有控件(标签和按钮)(您可能需要实现自定义 FindControl 方法,因为ASP 中的 FindControl .NET 不是递归的)。

这比您尝试通过直接加载 .aspx 等实现的效果要好得多,也更干净。

于 2012-07-10T22:22:18.453 回答