Personal Web Site Starter Kit の概要
Bill Evjen
Reuters
March 2005
日本語版最終更新日 2005 年 7 月 25 日
適用対象 :
Microsoft ASP.NET 2.0
Visual Web Developer 2005 Express Edition
Visual Studio 2005
概要: Visual Studio 2005 および Visual Web Developer 2005 Express Edition で使用可能なプロジェクトの種類である Personal Web Site Starter Kit (スタート キット) について説明します。
目次
はじめに
スタート キットの既定のファイルを使用した作業
マスタ ページ : Default.master
設定ページ : Web.config
最初のコンテンツ ページ: Default.aspx
Resume.aspx を使用したプロフィールの作成
外部サイトのリンク : Links.aspx
フォト : Albums.aspx
自分自身のアルバムの管理
ユーザーの登録 : Register.aspx
まとめ
参考書籍
はじめに
Visual Web Developer 2005 Express Edition には、すぐに使い始めることのできる Personal Web Site Starter Kit が用意されています。Personal Web Site Starter Kit は、立派な Web サイトをすぐに公開できるようにするツールを使用するために設計されています。このスタート キットには、基礎となるホーム ページ、プロフィール用のページ、お気に入りのリンクを置くページ、およびフォトを公開可能なページが用意されています。Personal Web Site Starter Kit のホーム ページを、次の図 1 に示します。
図 1. Personal Web Site Starter Kit のホーム ページ
このスタート キットの最大のポイントは、フォト アルバムを公開可能なアルバム ページです。アルバム ページの優れた機能の 1 つは、アルバムを不特定多数の人に公開したり、アルバムへのアクセスを制限して選択された人のみ参照可能にしたりすることが可能な機能です。既定のアルバム ページを図 2 に示します。
図 2. フォト ギャラリー ホーム ページ
Personal Web Site Starter Kit のすべてのページでは、既定の lorem ipsum テキストを削除して、自分の言葉に置き換えることができます。 これを行うと、すぐに個人用の Web サイトが完成します。
Personal Web Site Starter Kit は、サイトの構築方法の基礎を学習する優れた方法です。このアプリケーションのページからコードを参照できます。コードでは、ASP.NET の最新のリリースの最も強力な機能がいくつか使用されています。実際の環境の Web サイトにこのスタート キットを使用するつもりがない場合でも、ASP.NET 2.0 を使用してアプリケーションを作成する方法を学習するために価値のあるリソースです。
このアプリケーションでの作業について説明する前に、まずインストール方法について調べてみましょう。
スタート キットの既定のファイルを使用した作業
Personal Web Site Starter Kit は、Visual Web Developer 2005 Express Edition で使用可能なプロジェクトの 1 つであるため、このアプリケーションのインストールはこの IDE のプロジェクトを開くのと同様に簡単です。スタート キットのインスタンスを作成するには、Visual Studio のメニューから [ファイル] をクリックして、[新しい Web サイト] を選択します。 [新しい Web サイト] ダイアログ ボックスが開きます。ここでは、図 3 に示すように Personal Web Site Starter Kit を選択できます。
図 3. 新しい Web サイト
アプリケーションを選択した後の最初の手順として、実際にアプリケーションを構築して、ブラウザに引き出します。これは、データベース ファイル ASPNETDB.mdf をこの特別なアプリケーション用に作成するためです。このファイルは、ASP.NET 2.0 で提供されるようになったメンバシップおよびロール管理機能で使用されます。アプリケーションが最初に実行される際、アプリケーションによりロール管理システム内で 1 組のロールを作成します。
アプリケーションが最初に実行される際、それらのロールはどのように作成されるのでしょうか。とても興味深い方法で作成されます。アプリケーションの Global.asax ファイルを調べて、作成方法を見てみましょう。Global.asax ファイルには、次のリスト 1 に示すように Application_Start 関数が含まれている点に注意してください。
リスト 1. Global.asax からアプリケーションが最初に実行される際の新しいロールの作成
Sub Application_Start(ByVal sender As [Object], ByVal e As EventArgs)
AddHandler SiteMap.SiteMapResolve, AddressOf Me.AppendQueryString
If (Roles.RoleExists("Administrators") = False) Then
Roles.CreateRole("Administrators")
End If
If (Roles.RoleExists("Friends") = False) Then
Roles.CreateRole("Friends")
End If
End Sub
このメソッドでは、まず 1 組の If Then により、Administrators または Friends のロールがシステムに存在するかどうかがチェックされます。これは、Roles クラスの RoleExists メソッドを使用して行われます。このチェックが False になった場合、CreateRole メソッドを使用してロールが作成されます。
一度アプリケーションを引き出したら、次の手順としてアプリケーションの管理者ユーザーを作成するため、シャットダウンできます。アプリケーションの管理者を作成するには、Visual Studio ソリューション エクスプローラから [ASP.NET Configuration] ボタンをクリックします。 これにより、Web Site Administration ツールが直接 Visual Studio に引き出されます。Visual Studio のメニューから [Website] を選択して、[ASP.NET Configuration] をクリックしてもこのページを引き出すことができます。
[ASP.NET Configuration] ページが作成されて Visual Studio に直接引き出された後、このツールを使用してサイトの管理者を表す新しいユーザーを作成します。
この管理ユーザーを作成するには、[ASP.NET Configuration] ページから [セキュリティ] タブをクリックします。 このページを 図 4 に示します。
図 4. 管理ページ
[セキュリティ] ページから、Create user リンクを選択して管理者ユーザーを作成できます。これにより、ユーザーのすべての情報を入力するフォームが引き出されます。その情報は ASPNETDB.mdf ファイルに保存されます。このフォームを 図 5 に示します。
図 5. 管理者の追加
図 5 に示すように、管理者のユーザー名、パスワード、電子メール アドレス、およびセキュリティ保護のための質問とその回答を入力します。[Create User] ボタンをクリックする前に、必ず管理者が所属するロールを選択してください。 たとえば、[Administrators] チェック ボックスをオンにしてから [Create User] ボタンをクリックすると、この管理ユーザーが作成されます。 アプリケーションで複数の管理者を作成する場合は、同じ方法で別のユーザーを作成するだけです。
次に、スタート キットの各部分を調べ、このアプリケーションを独自のものとするために必要なカスタマイズ ポイントを適用する場所について正確に理解しましょう。
マスタ ページ : Default.master
このスタート キットの最初の項目として、Default.master ページについて調べます。ASP.NET 2.0 では、テンプレート ページを構築する方法が導入されています。これは、マスタ テンプレートまたはマスタ ページを構築した後、指定したそれぞれのページに適用できることを意味しています。Personal Web Site Starter Kit で使用されるあるマスタ ページ Default.master には、標準的な .aspx ページと同様に分離コード ページ (Default.master.vb または Default.master.cs) も含まれている点に注目してください。ただし、このマスタ ページでは表示内容のみが処理されて他のビジネス ロジックは処理されないため、分離コード ページは分離コード ページの実際のコード フレームワークにすぎず、実際のコードは何も含まれません。
このページの表示内容はすべて Default.master ページ自体の中に含まれます。Visual Studio には、.master ページを視覚的に表示する優れた機能があります。Visual Studio IDE の [デザイン] タブをクリックすると、マスタ ページの実際の外観を表示できます。
次の図 6 はその内容を示しています。
図 6. マスタ ページ
この図から、Visual Studio ではこのマスタ ページを使用するすべてのコンテンツ ページにこのルック アンド フィールが適用されることがわかります (これについてはすぐ後で説明します)。さらに、HTML サーバーおよび Web サーバー コントロールのコレクションがページに配置されています。これらのコントロールには、Menu、SiteMapPath、および LoginStatus コントロールが含まれます。多くの場合、このページで最も興味深いコントロールは ContentPlaceHolder コントロールです。
ContentPlaceHolder コントロールは、すべてのコンテンツ ページでこの特別なマスタ ページを使用してコンテンツを挿入可能にする定義済み領域です。基本的には、マスタ ページを作成する際、ページの指定したセクションをコンテンツ ページで使用可能にします。コンテンツ ページは、このコンテンツ領域の境界の外では機能しません。マスタ ページに配置された複数の ContentPlaceHolder コントロールを使用して複数のコンテンツ領域を含めることはできますが、この例 (既定の Default.master ページ) ではこれらのコントロールの 1 つだけを使用します。
このマスタ ページでは、Visual Studio に表示される [デザイン] ビューから、またはコード ビューからページのコードを直接変更することによりページを変更します。正確には何を変更するのでしょうか。たとえば、多くの場合 Your Name Here の部分をサイトに付ける名前に変更します。
Default.master ページでは、ページの下部に SiteMapDataSource コントロールも存在します。SiteMapDataSource コントロールは、ASP.NET 2.0 に追加された新しいデータ ソース コントロールの 1 つです。このコントロールは、アプリケーション内に含まれるすべての web.sitemap ファイルで機能するように設計されています。web.sitemap ファイルは、基本的にはアプリケーションのページ構造の XML 表現であり、自由に表示可能な 1 組のサイト ナビゲーション コントロールに関連付けることができます。実際、Default.master ページには 1 組の新しいサイト ナビゲーション コントロールが含まれています。1 つは、Menu サーバー コントロールです。このコントロールをリスト 2 に示します。
リスト 2. Menu コントロールの内容
<asp:menu id="menua" runat="server" datasourceid="SiteMapDataSource1" cssclass="menua" orientation="Horizontal" maximumdynamicdisplaylevels="0" skiplinktext="" staticdisplaylevels="2" />
このコードからは、Menu コントロールがこのページの SiteMapDataSource1 コントロールを通して web.sitemap ファイルをポイントしていることがわかります。これは、Menu コントロールの DataSourceId 属性を使用して行われます。このコントロールで注意すべき重要な属性は Orientation 属性です。この属性では、リンクを水平に配置することが指定されます。さらに、StaticDisplayLevels 属性の使用方法と、リンクの最初の 2 つの層だけが表示される (「ホーム」が最初の層で、「プロフィール」、「リンク」、および「アルバム」が 2 番目の層になります) ようにその値が 2 に設定されている点に注意してください。
このページの Menu コントロールの横には、SiteMapPath コントロールもあります。このコントロールでも、web.sitemap ファイル内にあるデータが使用されます。生成された際に、エンド ユーザーがサブページの 1 つを参照すると、このコントロールがブレッドクラムナビゲーションと呼ばれるものをページで使用して、アプリケーション内のユーザーの場所をユーザーに知らせる方法がわかります。これを次の図 7 に示します。
図 7. ブレッドクラム ナビゲーション
このコントロールの面白い点は、SiteMapDataSource コントロールを使用して web.sitemap ファイルと関連付けられていないことです。代わりに、このコントロールは自分自身を自動的に web.sitemap ファイルに関連付けます。このコントロールのカスタマイズの点からすると、簡単に変更可能な 1 つの属性は PathSeparator 属性です。この属性では、各ページ レベル間で使用される文字が指定されます。
Default.master ページを変更する範囲内で、一度サイトの他のコンポーネントの一部に移動しましょう。
設定ページ : Web.config
ASP.NET アプリケーション内で web.config を使用するのは新しいことではありません。新しいのは、この XML 構成ファイルにより構成可能になった、ASP.NET 2.0 により提供されるすべての新しい機能です。
アプリケーションのテーマを変更することにより、サイトのルック アンド フィールに大きい変更を加えることができます。 web.config ファイルを見ると、生成されたすべてのページのテーマで White と呼ばれるテーマが使用されているのがわかります。
<pages styleSheetTheme="White" />
ソリューション エクスプローラで見ると、App_Themes と呼ばれるフォルダがあります。このフォルダ内には、2 つのフォルダに集約された 2 つのテーマ (Black および White) があります。既定では、Personal Web Site Starter Kit では White テーマが使用されます。
テーマには、アプリケーションのスタイルが含まれています。テーマは、コントロール ページまたはサイト レベルで適用できます。ただし、このスタート キットの場合は、web.config ファイルで行われる指定を通してアプリケーション全体にテーマが適用されます。テーマ フォルダの 1 つを開いた場合、Black および White テーマの両方が .css ファイルだけではなく .skin ファイルおよびイメージで構成されていることがわかります。.skin ファイルでは、それらの属性を使用してサーバー コントロールに適用されるスタイルが定義されます。
ページのテーマの変更は、次に示すように web.config ファイルの styleSheetTheme 属性の値を変更するのと同様に簡単です。
<pages styleSheetTheme="Black" />
Personal Web Site Starter Kit の Black および White テーマの両方を、次の図 8 に示します。
アプリケーションの外観全体を変更するには、定義済みテーマの 1 つを選択するか、独自のテーマを作成できます。 これを行うには、App_Themes ディレクトリに新しいテーマ フォルダを作成し、独自の .css、.skin、およびイメージを作成します。その後、@Page ディレクティブの Theme 属性を使用して個々のページのテーマを変更するか、web.config ファイルの <pages> 要素の styleSheetTheme 属性を使用してアプリケーション全体のテーマを一度に変更することができます。
ここで、web.config ファイルの下部にある <location> セクションを見てみましょう。
<location path="Admin">
<system.web>
<authorization>
<allow roles="Administrators" />
<deny users="*" />
</authorization>
</system.web>
</location>
ほとんどの場合、開発者はアプリケーション全体に含まれているすべてに構成設定を適用する手段として、web.config ファイルに設定を適用します。ただし、web.config ファイル内で <location> 要素を使用して、アプリケーション全体に適用された構成の領域外のアプリケーション内に含まれるフォルダや、さらには特定のページに適用される設定を制御することもできます。
上に示したセクションでは、Personal Web Site アプリケーションの Admin フォルダに特定の構成設定が適用されます。これは、ここで定義されるすべてが、Admin フォルダ内に含まれるそれぞれのファイルに定義されることを意味しています。<authorization> 要素を使用して適用される設定により、Administrators ロールのメンバである認証されたユーザーだけがコンテンツを参照できるようになります。ユーザーが Administrators ロールのメンバではない場合、このフォルダに含まれるどのページを参照しようとしてもロック アウトされます。
最初のコンテンツ ページ: Default.aspx
Default.aspx ページを見ると、標準的な .aspx ページではないことがわかります。これは、コンテンツ ページです。このアプリケーションの大部分のページのように、このページではテンプレートとしてマスタ ページが使用されます。リスト 3 に示すこのページの基本構造を見てみましょう。
リスト 3. Default.aspx ページの構造
<%@ Page Language="VB" MasterPageFile="~/Default.master"
Title="Your Name Here | Home"
CodeFile="Default.aspx.vb" Inherits="Default_aspx" %>
<asp:content id="Content1" contentplaceholderid="Main" runat="server">
</asp:content>
コンテンツ ページとするためのすべての .aspx ページでは、@Page ディレクティブで MasterPageFile 属性が使用されます。リスト 3 からは、MasterPageFile 属性が Default.master ページをポイントしていることがわかります。これは、このコンテンツ ページが継承するページ テンプレートです。
これはコンテンツ ページであるため、標準の HTML タグ (開始および終了の <html>、<body>、および <form> タグ) はどれも含める必要がありません。これらのタグは、マスタ ページで定義されており、タグの表現を繰り返す必要がないためです。含まれるのは、1 つの Content サーバー コントロールです。このコントロールは、マスタ ページで使用されていた 1 つの ContentPlaceHolder コントロールに自分自身を関連付けます。2 つのコントロール間の関連付けは、Content コントロール内で ContentPlaceHolderID 属性を使用して行われます。リスト 3 では、ContentPlaceHolderId 属性の値が Main となっており、マスタ ページの ContentPlaceHolder コントロールの ID の値になることがわかります。これは、ページ全体のコンテンツが定義されているこの Content コントロールの範囲内になります。マスタ ページで別の ContentPlaceHolder コントロールを追加することになった場合は、コンテンツ ページで別の Content コントロールを追加することによりそれらのインスタンスも関連付けることができます。
マスタ ページとともにコンテンツ ページを使用することの利点は、Visual Web Developer 2005 Express Edition で作業できるという点です。Default.aspx の [デザイン] ビューをクリックすると、ページの次のビューが表示されます。
図 9. [デザイン] ビュー
この図からは、マスタ ページで定義されたコンテンツは灰色で表示される一方で、コンテンツ ページから変更可能なセクションは標準の白または明るいビューで表示されることがわかります。
Default.aspx ページはアプリケーションのホーム ページです。アプリケーションをカスタマイズするためにここで行う最初の作業は、すべての lorem ipsum テキストを意味のあるテキストで置き換えることです。このページの lorem ipsum テキストはすべてハードコーディングされたテキストであり、データドリブンではないため、.aspx ページ自体でこのテキストを直接変更するだけです。
このページの興味深い点は、ASP.NET 2.0 のより魅力的な部分がいくつか含まれていることです。ページの左側の列は、ページの上部で定義されています。ここで定義される最初のコントロールは、LoginView コントロールです。 ユーザーがアプリケーションにログイン可能なアプリケーションで作業しているため、このページは認証および認可されたユーザー (アプリケーションにログインしており、特定のロールの権限を付与されたことを意味する) と見なされるユーザーが参照します。さらに、認証および認可処理を通過しなかったユーザーにこのページを参照させることもできます。これらの動的な動作のため、認証されたユーザーに特定のデータを表示する一方で、認証されていないユーザーに他のコンテンツを表示する状況が生じます。LoginView コントロールを使用すると、この種類の動作を設定できます。
LoginView コントロールには、2 つのテンプレート <AnonymousTemplate> および <LoggedInTemplate> があります。Default.aspx のコードを見ると、AnonymousTemplate セクションにはエンド ユーザーがアプリケーションへのログインを試みることを可能にするフォームが含まれていることがわかります。アプリケーションへのログイン後にユーザーが認証された場合、LoggedInTemplate セクションで指定されたコンテンツが表示されます。このセクションにはいくらかのテキストと LoginName コントロールだけが含まれています。LoginName コントロールは、認証されたユーザーの名前を表示するためだけに使用されます。これらの両方のビューの例を、図 10 に示します。
図 10. 認証されていないビューと認証されたビュー
ログインフォームの下には、ランダム アルバムからのランダム フォトを表示する FormView コントロールがあります。FormView コントロールは、このフォトおよび関連するデータを Default.aspx ページの ObjectDataSouce コントロール (このコントロールはページの下部にあります) から取得します。ObjectDataSource コントロールのコードを、次のリスト 4 に示します。
リスト 4. ObjectDataSource コントロール
<asp:ObjectDataSource ID="ObjectDataSource1" Runat="server" TypeName="PhotoManager" SelectMethod="GetPhotos"> </asp:ObjectDataSource>
ObjectDataSource コントロールは、中間層コンポーネントからデータを取得するためのものです。この場合、ObjectDataSource1 コントロールは TypeName 属性を使用して PhotoManager と呼ばれるクラスと、GetPhotos と呼ばれるこのクラス内に含まれるメソッドにポイントします。実際には、このクラスはアプリケーションの App_Code フォルダ内に存在します。そのため、Default.aspx ページが要求される際に発生する動作として、ObjectDataSource コントロールにより PhotoManager クラスが呼び出され、提供される情報が <% Eval("AlbumID") %> などの単純な連結構文を使用して関連付けられます。
Default.aspx ページでイメージのサムネイルを作成するために、カスタム http ハンドラが使用されます。http ハンドラは、次のリスト 5 に示すように HTML <img> 要素から使用されます。
リスト 5. イメージに対する http ハンドラの使用
<img src="Handler.ashx?PhotoID=<%# Eval("PhotoID") %>&Size=M"
class="photo_198" style="border:4px solid white"
alt='Photo Number <%# Eval("PhotoID") %>' />
この例からは、実際のイメージは http ハンドラ Handler.ashx から取得されることがわかります。さらに、このファイルがアプリケーション内に含まれることもわかります。ASP.NET ページから自分自身の http ハンドラを使用可能な方法の例として、このファイルを復習してください。
Resume.aspx を使用したプロフィールの作成
スタート キットのプロフィール ページは、他のコンテンツ ページです。ブラウザでこのページを引き出すと、Default.aspx ページで使用されているのと同じマスタ ページがこのページで使用されていることがわかります。
Resume.aspx ページは、プロフィール (履歴書とも呼ばれます) を表示可能にするページです。コンテンツ ページであるのに加えて、このページには静的なイメージおよびテキストのコレクションだけが含まれています。それらはすべてページの Content サーバー コントロール内に含まれています。
プロフィールを追加することによりこのページをカスタマイズするには、lorem ipsum テキストを独自のテキストで置き換えるだけです。イメージの場合は、アプリケーションの Images フォルダに自分自身のフォトを配置して、ページの <img> HTML 要素からこの新しいフォトにポイントします。
<img src="images/resume-evjen.jpg" class="photo_198" style="border:4px solid white" alt="Resume Photo"/>
外部サイトのリンク : Links.aspx
別の基本ページは Links.aspx ページです。このページは、Default.master を使用する別のコンテンツ ページです。このページには、トップ 5、おしゃれなサイト デザイン、フォト サイト、および資料などのカテゴリに分類されたリンクの一覧だけが存在します。
Links.aspx ページを編集すると、このページに表示されるカテゴリとリンクをカスタマイズできます。
フォト : Albums.aspx
Personal Web Site Starter Kit の大きなポイントの 1 つは、これに含まれるフォト アルバム システムです。アルバム ページをクリックすると、Albums.aspx に移動します。このページの既定のビューを図 11 に示します。
図 11. フォト ギャラリー ホーム ページ (拡大するにはクリックしてください)
このアプリケーションに含まれるフォト アルバム システムでは、カスタム アルバム内にあるすべての個人用フォトを表示できます。既定のビューに含まれているものは、デモンストレーション用の 1 つのアルバムです。このアルバム ビューには、アルバム内の最初のフォトとともに、アルバムに含まれているフォトの数が表示されます。アルバム名 (ハイパーリンクになっています) をクリックすると、アルバムに含まれているフォトが表示されるページに移動します。これを次の図 12 に示します。
図 12. フォト アルバム
この図では、アルバム内の各フォトが大きいイメージのサムネイル画像で表示されていることがわかります。 他に含まれているのは、フォトの名前です。 イメージの 1 つをクリックすると、大きいイメージが開きます。 次の図 13 はその内容を示しています。
図 13. フォトの表示
1 つのイメージを表示すると、ナビゲーション システムが表示されていることがわかります。次の図で、このイメージ ナビゲーション システムについて説明します。
図 14. フォトのナビゲート
このページには、[download photo] ボタンも含まれています。 このボタンをクリックすると、イメージが実際のサイズで表示されるページに移動します。右クリックしてイメージをディスクに保存かどうかが閲覧しているユーザーに尋ねられます。
カスタマイズされた Albums.aspx ページを 図 15 に示します。
図 15. カスタマイズされたアルバム
ObjectDataSource コントロールを使用してランダムなアルバムからランダムなフォトを取得し、その日のフォトとして表示するサイトのホーム ページと同様、Albums.aspx ページも ObjectDataSource コントロールを使用し、アルバム (加えて、アルバムの最初のフォト) の一覧を取得して表示します。
<asp:ObjectDataSource ID="ObjectDataSource1" Runat="server" TypeName="PhotoManager" SelectMethod="GetAlbums"> </asp:ObjectDataSource>
この場合、ObjectDataSource1 コントロールにより同じクラス PhotoManager が使用されていますが、異なる点として GetAlbums メソッドを使用してアルバムの一覧が取得されます。 GetAlbums メソッドを次のリスト 6 に示します。
リスト 6. GetAlbums メソッド
Public Function GetAlbums() As Generic.List(Of Album)
command.CommandText = "GetAlbums"
command.Parameters.Add(new SqlParameter("@IsPublic", filter))
Dim reader As SqlDataReader = command.ExecuteReader()
Dim list As New Generic.List(Of Album)()
Do While (reader.Read())
Dim temp As New Album(CInt(reader("AlbumID")), & _
CInt(reader("NumberOfPhotos")), & _
CStr(reader("Caption")), CBool(reader("IsPublic")))
list.Add(temp)
Loop
Return list
End Function
このコードからは、GetAlbums メソッドが入力パラメータを使用せずに、Albums の一般的なリストを返すことがわかります。Albums タイプは、App_Code フォルダにも存在する ObjectTypes.vb または ObjectTypes.cs ファイルで定義されます。一度各アルバムがデータベースから取得されると、次に示すように宣言型の連結を使用してアルバムの詳細の一部が表示されます。
<h4><a href="Photos.aspx?AlbumID=<%# Eval("AlbumID") %>">
<%# Server.HtmlEncode(Eval("Caption").ToString()) %></a></h4>
<%# Eval("Count") %> Photo(s)
これらの文からは、AlbumID および Caption を使用してアルバムの詳細へのハイパーリンクが作成されることがわかります。その後、Count プロパティを使用してアルバムに含まれるイメージの総数が返されます。
注 追加情報として、GetAlbumsメソッドは .NET Framework 2.0 により提供される新しいジェネリクス機能の良い例です。ジェネリクスにより、ボックス化およびボックス化解除の処理を回避可能な、厳密に型指定されたコレクションを作成できるようになります。この処理は、ジェネリクスの基づくコレクション以外のコレクションでの作業時に発生します。ジェネリクス コレクションでの作業が容易になり、パフォーマンスが向上するのがわかります。
自分自身のアルバムの管理
Administrators ロール下で定義されたユーザーとして Personal Web Site Starter Kit にログインした場合、アプリケーションのナビゲーション構造にアクセス可能な別のページがあることがわかります。このページの名前は「管理」で、次の図 16 に示します。
図 16. アルバムの管理
管理ページをクリックすると、Admin\Albums.aspx 内にあるページに移動します。この Albums.aspx ページでは、アプリケーション全体で表示されるアルバムを管理できます。このページを 図 17 に示します。
図 17. 新しいアルバムの作成
このビューからは、サンプル アルバムがアルバムの一覧に表示されているのがわかります。表示された各アルバムを名前変更、編集、または削除できます。自分自身のアルバムを追加するため、サンプル アルバムは削除してかまいません。
新しいアルバムを追加するには、ページの [Add New Album] セクションのテキスト ボックスにアルバムの名前を入力します。 このアルバムを誰でも参照可能な公開用のアルバムとするかどうか、または個人用のアルバムとするかどうかを決定する必要があります。個人用のアルバムが意味することについては後で説明します。
新しいアルバムにイメージを追加するには、アルバムの一覧から [編集] ボタンをクリックします。 これにより、アルバムの詳細ビューが引き出されます (次の図 18 に示します)。
図 18. 詳細情報の設定 (拡大するにはクリックしてください)
このページからは、アルバムに新しいイメージを追加したり、閲覧するユーザーに表示されるイメージの名前を指定できます。これらの値を指定した後、[追加] ボタンをクリックするだけでイメージがアルバムに表示されます。
図 19. フォトの追加
この方法で一度に 1 つのイメージを追加できるだけでなく、アプリケーション内に存在する Uploads フォルダにイメージをコピーすることにより、多数のイメージを一度に追加することもできます。アルバムに配置する予定のすべてのイメージを Uploads フォルダにコピーしたら、アルバムの管理ビューに戻って左側の列から [インポート] ボタンをクリックします。 これにより、イメージが格納用のデータベースに移動します。イメージがデータベースに移動したら、図 20 に示すようにイメージがアルバム ページに一覧表示されます。
図 20. 新しいイメージの追加後
Uploads フォルダからデータベースにイメージを移動した後、Uploads フォルダに配置したイメージを削除する必要があります。これは、もう一度 [インポート] ボタンをクリックするだけでイメージが再度アップロードされ、フォルダ内に各イメージが 2 枚存在するようになるためです。
イメージがデータベースにアップロードされてアルバムに追加された後、ばらばらにアップロードした場合は、各イメージに使用していた名前がそのままファイルの名前になっていることがわかります。各イメージの名前をより意味のある名前に変更することもできます。この作業を行うには、フォトの横にある [名前の変更] ボタンをクリックすると、ファイルの名前を変更可能なテキスト ボックスが表示されます。 図 21 はその内容を示しています。
図 21. フォトの名前の変更
ユーザーの登録 : Register.aspx
アプリケーションのナビゲーションにある [Register] リンクをクリックすると、閲覧しているユーザーはアプリケーションでの登録を行うことのできるページに移動します。このページは、閲覧しているユーザーがホーム ページの [Create Account] ボタンをクリックしてもアクセスできます。
Register.aspx ページを図 22 に示します。
図 22. 新しいアカウントの要求
ユーザーは実際には何を登録するのでしょうか。登録したユーザーは、一度登録が完了しても新しいアクセス機能を使用できるわけではありません。代わりに、まず Administrator ロールを持つユーザーによりさらに多くの権限を有効にしてもらう必要があります。
Personal Web Site Starter Kit には、Administrators と Friends の 2 つのロールがあります。どちらにもある程度の定義があります。
管理者と見なされる個人は、アプリケーションを管理できます。これは、このロールを持つユーザーが新しいアルバムおよびフォトの作成、アルバムおよびフォトの削除、項目の名前変更、およびこれらのすべての項目が公開用または個人用であるかの決定を行うことができます。管理者には、アプリケーションの登録ユーザーを管理する権限があります。管理者は、Administrator ロールのユーザーを追加および削除するだけでなく、Friends ロールのユーザーも追加したり削除したりすることができます。
Friends ロールを持っていると定義されるユーザーは、前述のどの項目も管理できません。代わりに、Friends ロールで定義されたユーザーは個人用に指定されたアルバムを参照できます。
個人用に指定されたアルバムは、Administrators または Friends ロールを持つユーザーだけが参照できます。認証されていないユーザーは、公開用に指定されていないアルバムを参照することができません。
ユーザーが個人用 Web サイトを登録すると、それらのユーザーは ASP.NET Web Site Administration ツールにあるユーザーの一覧に配置されます。このツールは、アプリケーションの管理ページの [Users and Settings] セクションから ASP.NET Web Site Administration Tool リンクをクリックすることにより取得できます。このページを引き出す他の方法には、Visual Studio ソリューション エクスプローラの適切なボタンをクリックする方法か、[Website] を選択して [ASP.NET Configuration] を選択する方法があります。
この構成ツールが開いたら、[セキュリティ] タブを選択します。 セキュリティ ページから、Manage users リンクを選択します。その後、登録されたユーザーの一覧が表示されます。これの例を、図 23 に示します。
図 23. ユーザーの一覧表示
このページからは、ユーザーを編集または削除できます。すぐに、作業に使用しているユーザーがアプリケーションでアクティブと見なされているかどうかを確認できます。アクティブは、ログイン (定義されたユーザー名とパスワード) がアプリケーションでの認証および認可のために機能することを意味します。ユーザーの横にあるチェック ボックスをオンにすると、ユーザーがアクティブになります。チェック ボックスをオフにすると、ユーザーのアクティブ ステータスが無効になります。
ある人がアプリケーションで登録した場合、基本的に Administrators または Friends ロールを持っていると見なされることを求めています。その人にこれらのロールのいずれかを割り当てる場合、名前の横にある Edit roles リンクをクリックして適切なロールを選択します。アクティブなユーザーで、Friends のロールを持っていると見なされた場合、次回アプリケーションにログインする際は、認証されていないユーザーが見ることのできない個人用と見なされたすべてのアルバムを参照できます。
まとめ
Personal Web Site Starter Kit は、さまざまな理由で価値があり、面白いと言えます。まず、自分の個人情報が含まれる Web サイトをすばやく簡単に作成できます。さらに重要な 2 つ目の点として、スタート キットでは ASP.NET 2.0 の新しい機能の一部に加え、基になっている .NET Framework 2.0 により提供される新しい機能について理解することができます。
新しいコントロールへのジェネリクスからは、このアプリケーションの多くの点を学習できます。注目すべきさらに重要な項目は、ASP.NET 2.0 が提供する新しいメンバシップとロール管理システムです。これらの新しいセキュリティ システムにより、アプリケーションへのアクセスを簡単に管理して、一般的な方法でユーザーを認証するだけでなく、さまざまなアクセス権限を持つ特定のロールを認証されたユーザーに付与することが可能になります。
このスタート キットの概念はそのまま使用することではなく、大幅にカスタマイズして使用することです。lorem ipsum テキストを変更することだけにとどめる必要がない代わりに、追加のロール、権限、新しいページ、および新しい機能を追加することも考える必要があります。詳細については、「Personal Web Site Starter Kit の拡張」を参照してください。それでは、楽しいコーディングを。
参考書籍
- Bill Evjen「ASP.NET 2.0 Beta Preview」
Bill Evjenは、.NET Framework テクノロジの活発な提案者であり、.NET の地域密着型の学習イニシアチブです。Missouri 州 St. Louis に本拠地を置く国際ニュースおよび金融サービス企業 Reuters (www.reuters.com) のテクニカル ディレクタです。Bill は、INETA (www.ineta.org)、International .NET Association の創設者および Executive Director であり、世界中の 100,000 人以上のメンバを代表しています。さらに、執筆活動や講演活動も行っており、『ASP.NET Professional Secrets』、『XML Web Services for ASP.NET』、『Web Services Enhancements』、および『Visual Basic .NET Bible』(すべて John Wiley 発行。Web サイトは http://www.wiley.com
) などの書籍も執筆しています。
