ASP.NETでのPlaceHolderコントロールの運用
2432 ワード
Marc Gusmano
あるWebページから別のWebページに変換するとき、あなたのASP.NETアプリケーションのユーザーインタフェースの一部は、ヘッダーのGIFピクチャ、水平ツールバーまたはナビゲーションバー、左側のリンクなど、「装飾」された部分のように常に一定に保たれています.各ページを再構築する必要がなく、それらを使用し続けることができます.
従来、一般的なASPテクノロジーは、1つのページの主要部分ごとにincludeファイルを作成し、各includeファイルを含む全体的なHTMLテーブルを作成することでした.この方法は実行可能だが,美しくないし,間違いやすい.幸いなことに、ASP.NETはこの問題をより良い方法で解決し、Visual Studioを運用することができます.NET PlaceHolder Webコントロール.このコントロールは、他のコントロールをコレクションとして含みます.実行時にそのcollectionをクリアしたり、追加したりすることができます.たとえば、実行時にWebユーザーコントロール(モジュール型のWebページ)を追加できます.PlaceHolder WebコントロールとWebユーザーコントロールを組み合わせて運用し、ASPを構築する方法についてお話しします.NETアプリケーションは方法を提供します.
まずVS.NETに新しいASPを作成する.NET Webアプリケーション.サンプルコードでC#を使っています.保存されたファイルにASPX拡張子が付いたWebフォームを作成します.私はそれを私のmainと呼んでいます.aspx.このページは、Webユーザーコントロール(ASCXファイル)を使用してすべてのページ「コンテンツ」を開発しているため、アプリケーションで唯一のWebページです.
メールでaspxページで選択したサイトの装飾内容を作成します.サイトの豊富なコンテンツを配置したい場所にPlaceHolderコントロールを追加します.次に、次のコードをページのPage Loadイベントに追加します.
このコードにより、Webユーザーコントロールページ(ASCX)の名前を含むクエリー文字列パラメータpがプロジェクトモジュールフォルダに表示されます.すべてのASCXファイルを個別のフォルダに置く必要はありませんが、アプリケーションをさらに分離することができます.
その文字列を取得したら、PlaceHolderのControlセットを空にして、以前に表示されたASCXを消去します.次に、デフォルトのASCXをロードする必要があるかどうかを確認します.最後に、pクエリ文字列がリクエストの一部である場合、pクエリ文字列によって表されるページがロードされます.
あなたのサイトに複数のWebページを表示するためにコードを構築するのに苦労する必要はありません.VS.NETプロジェクトに新しいWebユーザーコントロールページを追加します.このページを追加すると、アプリケーションの唯一のページとしてコードを設計し、作成することができます.それがmainにあることを知る必要はありません.aspxページで実行します.もちろん、このページがホームページと対話する必要がある場合は、そう簡単ではありませんが、ここではこの問題について話すつもりはありません.
図1.あなたのWeb GUIsの一定の要素を維持します
VS.NET開発環境でAccount Logonユーザーコントロールを表示する必要があることを想定します(図1参照).コードは、ページの詳細に関連するUIのみを開発者に提供します.ページ全体の他の面を変えることはできません.
ブラウザで実行するとhttp://localhost/CSCSdotNET/main.aspxを選択すると、まずdefaultがロードされます.ascxページ、これはmainのためです.aspxのPage Loadイベントのためです.Loginページに移動するには、pクエリー文字列パラメータをリクエストに追加するだけです.この例では、URLを使用します.http://localhost/CSCSdotNET/main.aspx?p=01-AccountLogon.今表示されているのはmain全体です.aspxページと、図1で見たダイナミックロードの01-ACcountLogon.ascs Webユーザーコントロール.
あるWebページから別のWebページに変換するとき、あなたのASP.NETアプリケーションのユーザーインタフェースの一部は、ヘッダーのGIFピクチャ、水平ツールバーまたはナビゲーションバー、左側のリンクなど、「装飾」された部分のように常に一定に保たれています.各ページを再構築する必要がなく、それらを使用し続けることができます.
従来、一般的なASPテクノロジーは、1つのページの主要部分ごとにincludeファイルを作成し、各includeファイルを含む全体的なHTMLテーブルを作成することでした.この方法は実行可能だが,美しくないし,間違いやすい.幸いなことに、ASP.NETはこの問題をより良い方法で解決し、Visual Studioを運用することができます.NET PlaceHolder Webコントロール.このコントロールは、他のコントロールをコレクションとして含みます.実行時にそのcollectionをクリアしたり、追加したりすることができます.たとえば、実行時にWebユーザーコントロール(モジュール型のWebページ)を追加できます.PlaceHolder WebコントロールとWebユーザーコントロールを組み合わせて運用し、ASPを構築する方法についてお話しします.NETアプリケーションは方法を提供します.
まずVS.NETに新しいASPを作成する.NET Webアプリケーション.サンプルコードでC#を使っています.保存されたファイルにASPX拡張子が付いたWebフォームを作成します.私はそれを私のmainと呼んでいます.aspx.このページは、Webユーザーコントロール(ASCXファイル)を使用してすべてのページ「コンテンツ」を開発しているため、アプリケーションで唯一のWebページです.
メールでaspxページで選択したサイトの装飾内容を作成します.サイトの豊富なコンテンツを配置したい場所にPlaceHolderコントロールを追加します.次に、次のコードをページのPage Loadイベントに追加します.
private void Page_Load(object sender, System.EventArgs e)
{ string p = Request.QueryString.Get("p");
PlaceHolder1.Controls.Clear();
if (p == null) PlaceHolder1.Controls.Add(LoadControl
("modules/" + "Default" + ".ascx"));
else { PlaceHolder1.Controls.Add(LoadControl
("modules/" + p + ".ascx")); } }
このコードにより、Webユーザーコントロールページ(ASCX)の名前を含むクエリー文字列パラメータpがプロジェクトモジュールフォルダに表示されます.すべてのASCXファイルを個別のフォルダに置く必要はありませんが、アプリケーションをさらに分離することができます.
その文字列を取得したら、PlaceHolderのControlセットを空にして、以前に表示されたASCXを消去します.次に、デフォルトのASCXをロードする必要があるかどうかを確認します.最後に、pクエリ文字列がリクエストの一部である場合、pクエリ文字列によって表されるページがロードされます.
あなたのサイトに複数のWebページを表示するためにコードを構築するのに苦労する必要はありません.VS.NETプロジェクトに新しいWebユーザーコントロールページを追加します.このページを追加すると、アプリケーションの唯一のページとしてコードを設計し、作成することができます.それがmainにあることを知る必要はありません.aspxページで実行します.もちろん、このページがホームページと対話する必要がある場合は、そう簡単ではありませんが、ここではこの問題について話すつもりはありません.
図1.あなたのWeb GUIsの一定の要素を維持します
VS.NET開発環境でAccount Logonユーザーコントロールを表示する必要があることを想定します(図1参照).コードは、ページの詳細に関連するUIのみを開発者に提供します.ページ全体の他の面を変えることはできません.
ブラウザで実行するとhttp://localhost/CSCSdotNET/main.aspxを選択すると、まずdefaultがロードされます.ascxページ、これはmainのためです.aspxのPage Loadイベントのためです.Loginページに移動するには、pクエリー文字列パラメータをリクエストに追加するだけです.この例では、URLを使用します.http://localhost/CSCSdotNET/main.aspx?p=01-AccountLogon.今表示されているのはmain全体です.aspxページと、図1で見たダイナミックロードの01-ACcountLogon.ascs Webユーザーコントロール.