無料で作るASP.NETでWebサイト(9)―ユーザコントロール

前回までで、アクセスカウンタの機能を実装してみたので、今回から具体的なコンテンツの実装に入っていきたいと思う。まずは「健康メモ」と行きたいが、だらだらとWebサイト構築の手順を書いていても長くなるだけなので、技術的なトピックから入ってポイントのみをさらりと書く方式に改めることにした。この方が、自分でWebサイトを作る際の参考になるだろう(かな?)。

Freesia_03 殺風景なので花。フリージア。

前の回へ:無料で作るASP.NETでWebサイト(8)
次の回へ:無料で作るASP.NETでWebサイト(10)

今回は、「ユーザコントロール」について取り上げる。現在開発中のWebサイトは、ヘッダ部分とフッタ部分をサイト共通のマスターページとして共有し、その中間の部分(マスターページのContentPlaceHolderサーバコントロール)をコンテンツごとに作り上げるという方式を採っている。「健康メモ」のコンテンツを作るとは、すなわちContentPlaceHolderサーバコントロールの中身を埋めるということだ。ということは、「健康メモ」に属する各Webページについて、ContentPlaceHolderサーバコントロールの中を埋めていってやればいいのだが、できれば「健康メモ」中のコンテンツのデザインも、できるだけ統一したいと考えるだろう。

そこで思いつくのは、「健康メモ」用にマスターページを作り、そのマスターページがサイト共通のマスターページを使う、というやり方だが、ASP.NETではマスターページの入れ子構造をサポートするので、このようなやり方はもちろん可能である。ただし、Visual Studio(Visual Web Developer)のフォームデザイナがこれをサポートしないので、マスターページを適用させた状態でのデザインができない。直接ソースを編集する必要があるので、せっかくの統合環境が生きないこともあり、この方法は考えないことにした。

そこで、「ユーザコントロール」である。ユーザコントロールとは、ユーザ定義のサーバコントロールで、複数のWebページで共通して使いたいデザインや機能をまとめておき、標準のサーバコントロールと同様にWebページに貼り付けて使えるというものだ。ユーザコントロールの中に配置できるサーバコントロールには基本的に制限がないので、かなり複雑なデザインもユーザコントロールとしてパーツ化できる。

ユーザコントロールを作るのは簡単で、ソリューションエクスプローラで「新しい項目の追加」を実行し、「Webユーザーコントロール」を選ぶとユーザコントロールが作成される。ユーザコントロールのファイル名拡張子は「.ascx」となるので、通常のWebページとは区別できる。ユーザコントロールのデザイナ画面も、Webページのデザイナ画面と変わらないので、そこにコントロールを配置していけばいい。

作成したユーザコントロールは、「ページのビルド」でコンパイル後、使用したいWebページに貼り付ける。今回の場合は、ContentPlaceHolderサーバコントロールの中にそのまま貼り付ける。これで、ユーザコントロール内のコントロールの参照や変更もでき、直接配置したコントロールと同様に使用できるようになる。

なお、マスターページと同様、ユーザコントロールも入れ子構造にできるが、こちらもVisual Studio(Visual Web Developer)のフォームデザイナではサポートされていない。なので、ユーザコントロールについても入れ子にしない、という方針で作成を続けている(使えればすごく便利なのだが)。

コメント