ステップ 7 ハンズオン: ASP.NET 2.0 Web パーツを使用したページのパーソナライズ その 1

WebParts コントロールの配置


グローバル ナレッジ ネットワーク株式会社
ナレッジ ソリューション本部 鈴木和久

最終更新日 2005 年 11 月 4 日

目標 ASP.NET 2.0 の WebParts コントロールを使用したページのパーソナライズの実現
使用技術
  • ASP.NET 2.0
  • Visual Basic 2005
取り上げるトピックス
  • ASP.NET 2.0 WebParts コントロール
前提知識
目次
備考 WebParts を利用するサイトはユーザーが認証可能なサイトに設定されていること。

WebParts コントロールの配置

ここでは、WebParts を使用してページのパーソナライズ機能を実現するための方法について説明します。

Web パーツを利用して、ページにパーソナライズ機能を持たせるためには、認証の仕組みによってユーザーが正しく識別されなければなりません。そのため、認証プ ロバイダが、Windows 認証のサイトは匿名アクセスを禁止します。また、Web.config ファイルには、偽装を許可し、サイトへアクセスしてきたユーザーが持つ権限でリソースにアクセスできるように設定します。

ASP.NET 2.0 では、WebParts を利用してパーソナライズした情報は、App_Data フォルダ内の ASPNETDB.MDF データベース ファイルに保存され、管理されます。

Web.config (匿名アクセスを禁止した Windows 認証サイト)

<identity impersonate="true"/>

 <authentication mode="Windows" />

匿名アクセスを許可した Forms 認証のサイトでは、Web.config に対して認証されていないユーザーへのアクセスを禁止します。

Web.config (匿名アクセスを許可した Forms 認証サイト)

<authentication mode="Forms" />

<authorization>
  <deny users="?" />
</authorization>

 

Default.aspx ページに、ツールボックスの WebParts タブから WebPartManager コントロールを配置します。このコントロールは今後、このページに配置される全ての Web パーツの管理を行います。

[レイアウト] - [テーブルの挿入] から 1 行 3 列のテーブルを配置します。このテーブルの 1 行 1 列目と、1 行 2 列目のセルにそれぞれ、WebParts タブから WebPartZone を配置します。Web パーツは WebPartZone 内に配置され、ゾーン内や他のゾーンとの間で配置の順序を入れ替えることができます。

 

標準タブから Calendar コントロールを WebPartZone1 コントロール内に配置します。この操作によって、WebPartZone 内の Calendar コントロールは Web パーツとして振舞うことができるようになります。

ソース ビューに切り替えて、Calendar コントロールに title 属性を追加し、「カレンダー」と定義します。
Calendar コントロールは title 属性を持ちませんが、WebPartZone に格納されたコントロールは Web パーツとして title 属性が使用できるようになります。 なお、Web パーツのタイトルは、その 2 で紹介する AppearanceEditorPart コントロールから定義することもできます。

<ZoneTemplate>
 <asp:Calendar title="カレンダー" ID="Calendar1" runat="server" BackColor="White" BorderColor="#999999"
   CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" Height="180px"
   Width="200px">

Web ユーザー コントロールも Web パーツとして扱うことができます。例として社員の内線を表示する Web ユーザー コントロールを用意します。

ソリューション エクスプローラのプロジェクトを選択し、[web サイト] - [新しい項目の追加] から web ユーザー コントロールを指定し、ファイル名を EmployeesList.ascx とします。

このページのデザイン画面に、Data タブから GridView を配置し、この GridView に Northwind データベースの[社員]テーブルから [社員コード] と [氏名]、[所属]、[内線] の列を表示するように設定を行います。

GridView コントロールの設定方法は 「ステップ 7 ハンズオン: ASP.NET 2.0 リッチ データ コントロールによるデータ アクセス ページの実装 」を参考にしてください。

 

Defaut.aspx のデザイン画面に用意されたテーブルの、1 行 3 列目のセルに WebParts タブから CatalogZoneコ ントロールを配置し、さらに、このコントロール内に DeclarativeCatalogPart コントロールを配置します。

CatalogZone コントロールは DeclarativeCatalogPart、PageCatalogPart、ImportCatalogPart コントロールのコンテナとして機能します。

DeclarativeCatalogPart コントロールは、このコントロールに、開発者が登録した Web パーツ 一覧からユーザーが選択した Web パーツを、任意の WebPartZone コントロール内に追加する機能を提供します。

DeclarativeCatalogPart タスク メニューの [テンプレートの編集] を指定し、ソリューション エクスプローラ ウィンドウから EmployeesList.ascx ファイルを、WebPartsTemplate 編集画面の中にドラッグ ドロップします。

この操作によって、EmployeesList Web ユーザー  コントロールのテンプレート定義が完了します。

ソース ビューに切り替えて、DeclarativeCatalogPart コントロール定義内の、WebPartsTemplate 内に定義された EmployeesList コントロールに、 title 属性を追加し、「内線一覧」と設定します。Web ユーザーコントロールは title 属性を持ちませんが、コンテナである DeclarativeCatalogPart コントロールが title 属性を解釈して Web パーツの表題として表示します。

<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
     <WebPartsTemplate>
         <uc1:EmployeesList title="内線一覧" ID="EmployeesList1" runat="server" />
     </WebPartsTemplate>
 </asp:DeclarativeCatalogPart>

 

Default.aspx に LinkButton を配置し、この Text プロパティを「WebParts カタログの表示」とし、Click イベント ハンドラに以下のようなコードを記述します。リンクをクリックすると、カタログ ゾーンから 「内線一覧」の項目が表示され、Web パーツを指定したゾーンに追加することができます。

 

LinkButton の Click イベント ハンドラ

Protected Sub  LinkButton1_Click(ByVal sender  As Object, ByVal  e As System.EventArgs) _ 
                                                                      Handles LinkButton1.Click

    WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode


End Sub

 

以上で、リンクをクリックするとカタログゾーンが表示され、登録されている Web パーツをゾーンに追加することができます。

次に、『DisplayModeの切り替え』について説明します。

 

ページのトップへ