-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をオーバーライドします。コントロールで何をしたいかは明確ではありません)、それらのページですべてのコントロール(ラベルとボタン)を検索します(ASPのFindControlは、カスタムのFindControlメソッドを実装する必要があります。 .NETは再帰的ではありません)。

これは、.aspxを直接ロードするなどで達成しようとしているものよりもはるかに優れており、クリーンです。

于 2012-07-10T22:22:18.453 に答える