ASP.NET Web部品のカスタマイズの概要

5159 ワード

一部のWebアプリケーションでは、ユーザーがアプリケーションのユーザーインタフェースと動作を変更またはカスタマイズできるようにする必要があります.ASP.NET Webコンポーネントコントロールセットは、そのコアフィーチャーにこの機能(パーソナライズ)を提供します.パーソナライズにより、Webコンポーネントコントロールのプロパティまたはステータスを長期にわたって保存でき、特定のブラウザセッションの制約を受けません.
パーソナライズされた作業方法
パーソナライズにより、いくつかの特殊な特徴を持つWebコンポーネントコントロールのプロパティを作成できます.カスタマイズ可能な属性は次のとおりです.
  • は、特定のユーザおよびWebページの識別に制約される.各ページの各ユーザのパーソナライズドコントロールの設定は、パーソナライズドデータに保存することができる.このデータにより、WebページのUIを変更し、個別のプリファレンス設定を保存できます.
  • 長期有効.パーソナライズされた設定は、単一のブラウザセッションの制約を受けません.これらは長期にわたって保存されているため、ユーザーが特定のページにアクセスするたびに、アプリケーションはそのユーザーに関する設定を取得することができます.ASPを1つカスタマイズする.NETアプリケーションサービスデータベースは、パーソナライズされたデータを保存します.デフォルトでは、ASP.NETアプリケーションが初めてパーソナライズまたは他のアプリケーションサービス(ロール、メンバーシップ、アーカイブなど)を使用する場合、ASP.NETはAppという名前でDataのサブディレクトリにこのデータベースが自動的に作成されます.同様にデフォルトではASP.NETは、このデータベースをSQL Server Expressデータベースファイルとして作成します.このファイルには、すべてのアプリケーション・サービスに必要なデータベース構造定義が含まれています.Webを使うconfigファイルは、アプリケーションを構成して、個人化のためのデータベースファイルを個別に作成することができます.また、Web.configファイルでは、デフォルトのSQL Server Expressデータベースファイルの代わりに、アプリケーション・サービスのデータ・ストレージにSQL Serverデータベースを指定することもできます.
  • は、1つのプロバイダ層を介してデータを保持する.このパーソナライズされたデータを格納して取得するメカニズムは、1つのプロバイダコンポーネントと1つのデータストレージから構成される.ASP.NETには、デフォルトのMicrosoft SQLプロバイダとデータベースが含まれています.カスタムプロバイダを作成し、任意のデータストレージを使用するように構成することもできます.
  • は、任意のWebコンポーネントコントロールで宣言することができる.カスタムコントロールを開発するときは、コードにPersonalizableパラメータを追加して、カスタマイズ用のWebコンポーネントコントロールの特定のプロパティを有効にすることができます.WebPartクラスから継承されたカスタムコントロールに加えて(これはASP.NETサーバコントロール、カスタムコントロール、またはユーザーコントロールにも適用されます)、どのコントロールもWebコンポーネントコントロールとして使用できます.ヒント:通常のプロパティは、パーソナライズ可能なプロパティのように保持できない場合には、異なる処理を行うことが重要です.WebPartZoneBaseの領域でプログラミングによってWebPartのコントロールまたは他のサーバのコントロールを追加し、プログラミングによって非個性的なプロパティを設定しようとすると(たとえば、LabelのコントロールでTextのプロパティを設定すると)、これらのプロパティはコントロールが追加された後にすべてリセットされます.これらのプロパティの値は長期的に保存できないためです.これらのプロパティを長期にわたって保存するには、ソースコードにPersonalizableパラメータを使用してマークする必要があります.また、同じブラウザ・セッション・リクエスト間でこれらのプロパティを保存するだけで(長期保存ではありません)、ビュー・ステータスを使用することもできます.

  • パーソナライズおよびその他のASP.NETフィーチャー
    Webアプリケーションのビューデータを保持するために他のいくつかのASPをパーソナライズおよび使用する.NETテクノロジーの比較:
  • パーソナライズは、Webコンポーネントの特徴である.個性化自体を直接使ってはいけません.パーソナライズを使用するには、WebPartZone要素でコントロールを使用する必要があります.これにより、Webコンポーネントの機能が備えられます.ヒント:任意のASP.NETサーバコントロール、カスタムコントロール、またはユーザーコントロールは、Webコンポーネントコントロールとして使用でき、カスタマイズの利点を得ることができます.
  • パーソナライズは、ビューステータスとは異なります.ビューステータスとパーソナライズは、コントロールのステータスデータを保持するために使用されますが、ビューステータスデータは現在のブラウザセッションにのみ保存され、パーソナライズされたデータは長期的に有効です.
  • パーソナライズはファイルとは異なります.パーソナライズは、Webページ内の特定のコントロールに対してのみユーザーステータスデータを保存します.ユーザに関する情報は個人に属し、あるカートアプリケーションのアカウント情報など、Webアプリケーションで複数のページ間で使用され、ファイルに保持されるべきである.詳細については、「ASP.NETアーカイブのプロパティの概要」を参照してください.

  • 個性化における重要な概念
    Webコンポーネントコントロールとともにパーソナライズを使用する場合は、パーソナライズ作業に影響を与えるいくつかの概念を理解する必要があります.
    最初の概念はページの個性化範囲です.ページパーソナライズ範囲は、ページ内のパーソナライズ変更を適用できるユーザ範囲である.任意の特定の期間において、1つのWebコンポーネントページは、共有されたパーソナル範囲またはユーザパーソナル範囲の2つの可能なページパーソナル範囲のうちの1つにのみ入ることができる.共有された個性化の範囲では、ページ内の任意の個性化の変更がすべてのユーザーに適用されます.ユーザーのカスタマイズ範囲では、ページ内のカスタマイズの変更は現在のユーザーにのみ適用されます.
    2つ目の関連概念は、コントロールの表示状態です.コントロールの表示状態は、特定のコントロールが個別のユーザーまたはすべてのユーザーに表示されているかどうかを検出します.ページ内の各WebPartコントロールは、共有されたコントロールであってもよく、ページ内のすべてのユーザーに対して表示されてもよいし、各ユーザーコントロールであってもよく、個別のユーザーに対してのみ表示されてもよい.表示状態は、コントロールがページに追加されることによって検出されます.コントロールがWebページの宣言によってマークされて追加される場合(静的コントロール)、コントロールは常に共有されます.コントロールがアプリケーションコードまたはユーザーによってコントロールディレクトリから選択されて追加された場合(ダイナミックコントロール)、ページの現在のパーソナライズされた範囲が表示される状態を検出します.ページが共有の範囲である場合、動的に追加されたコントロールは共有され、ページがユーザーの範囲である場合、コントロールはユーザーごとのコントロールです.
    3つ目の重要な概念は属性範囲です.ソースコードでPersonalizeパラメータを使用してコントロールにパーソナライズ可能なプロパティを作成すると、このプロパティにパーソナライズ可能な範囲(共有範囲またはユーザー範囲、デフォルトではユーザー範囲)を設定できます.これは、コントロール属性を超えてすべてのユーザーをパーソナライズし、ページ範囲が共有範囲である場合、許可されたユーザーのみをパーソナライズするためのより詳細なコントロールを提供します.
    総合的に、ページパーソナライズ範囲のこれらの概念、コントロールの可視状態、および属性パーソナライズ範囲は、Web部品コントロールの表示方法、およびユーザーのパーソナライズのために一連のオプションを作成します.次の表は、ユーザーが異なる範囲でWebコンポーネントコントロールをカスタマイズする場合の動作を要約しています.
    コントロールの表示状態
    共有範囲内のページ
    ユーザー範囲のページ
    共有コントロール(WebPartコントロールデフォルトでは共有)
    許可されたユーザーは、コントロールの共有範囲プロパティとユーザー範囲プロパティを同時にすべてのユーザーにカスタマイズできます.ダイナミックコントロールの場合(コントロールがプログラミングによってページに追加されたり、コントロールディレクトリから追加されたり)、許可されたユーザーはすべてのユーザーに対して永続的に削除することができます.静的コントロールの場合(コントロールは.aspxページのタグに宣言されています)、ユーザーがすべてのユーザーのためにこのコントロールを閉じることを許可されているにもかかわらず、削除できません.
    個別のユーザーは、パーソナライズされたプロパティの範囲を共有範囲に変更することはできません.ユーザー範囲のプロパティをカスタマイズできます.これらのプロパティの値は、ページが共有範囲である場合に指定されるプロパティの値よりも優先されます.コントロール内のユーザー固有のパーソナライズされたデータが失われたりリセットされたりすると、ユーザー範囲のプロパティはページが共有範囲であるときにこれらの値を復元します.個々のユーザーは、Page Catalogに追加された共有コントロールを自分で閉じることができますが、永続的に削除することはできません.
    ユーザーごとのコントロール
    ページが共有範囲である場合、このコントロールはページに表示されないため、パーソナライズできません.このコントロールは、ページがユーザー範囲である場合にのみページに表示されます.
    個々のユーザーは、このコントロールインスタンスが完全にプライベートであるため、コントロール内の共有範囲のプロパティとユーザー範囲のプロパティを同時にカスタマイズできます.個々のユーザーは、このコントロールを永続的に削除することもできます.
    パーソナライズされたコンポーネントの本質
    次の表には、直接使用しても間接的に使用しても、Webコンポーネントコントロールセットの2つの基本的なパーソナライズコンポーネントが表示されます.
    Webコンポーネントコントロール
    説明WebPartManager
    ページ内のすべてのWebコンポーネントを管理し、パーソナライズを許可または禁止し、パーソナライズされたデータのライフサイクルを管理します.各Webコンポーネントページには、WebPartManagerのコントロール(および一意)が必要です.WebPartPersonalization
    パーソナライズされた動作を完了するために必要な論理を実現します.