Asp.net-custom-controls
ASP.NET-カスタムコントロール
ASP.NETでは、ユーザーがコントロールを作成できます。 これらのユーザー定義のコントロールは、以下に分類されます。
- ユーザーコントロール
- カスタムコントロール
ユーザーコントロール
ユーザーコントロールは、他の多くのページで使用できるミニチュアASP.NETページまたはWebフォームのように動作します。 これらは、System.Web.UI.UserControlクラスから派生しています。 これらのコントロールには、次の特性があります。
- これらには.ascx拡張子が付いています。
- <html>、<body>、または<form>タグを含めることはできません。
- これらには、Pageディレクティブの代わりにControlディレクティブがあります。
この概念を理解するために、Webページのフッターとして機能する単純なユーザーコントロールを作成しましょう。 ユーザーコントロールを作成して使用するには、次の手順を実行します。
- 新しいWebアプリケーションを作成します。
- ソリューションエクスプローラーでプロジェクトフォルダーを右クリックし、[新しい項目の追加]を選択します。 新しいアイテムを追加
- [新しいアイテムの追加]ダイアログボックスから[Webユーザーコントロール]を選択し、footer.ascxという名前を付けます。 最初、footer.ascxにはControlディレクティブのみが含まれています。
- ファイルに次のコードを追加します。
ユーザーコントロールをWebページに追加するには、Registerディレクティブとユーザーコントロールのインスタンスをページに追加する必要があります。 次のコードはコンテンツファイルを示しています。
実行すると、ページにフッターが表示され、このコントロールはWebサイトのすべてのページで使用できます。
次の点に注意してください。
(1) Registerディレクティブは、コントロールのタグ名とタグプレフィックスを指定します。
- (2)*ページにユーザーコントロールを追加する際には、次のタグ名とプレフィックスを使用する必要があります。
カスタムコントロール
カスタムコントロールは、個別のアセンブリとして展開されます。 これらはダイナミックリンクライブラリ(DLL)にコンパイルされ、他のASP.NETサーバーコントロールとして使用されます。 次のいずれかの方法で作成できます。
- 既存のコントロールからカスタムコントロールを派生させることにより
- 2つ以上の既存のコントロールを組み合わせた新しいカスタムコントロールを作成する。
- 基本コントロールクラスから派生します。
概念を理解するために、カスタムコントロールを作成して、ブラウザにテキストメッセージを表示するだけにします。 このコントロールを作成するには、次の手順を実行します。
新しいWebサイトを作成します。 ソリューションエクスプローラーのツリーの上部にあるソリューション(プロジェクトではなく)を右クリックします。
[新しいプロジェクト]ダイアログボックスで、プロジェクトテンプレートから[ASP.NETサーバーコントロール]を選択します。
上記の手順では、新しいプロジェクトを追加し、ServerControl1という完全なカスタムコントロールをソリューションに作成します。 この例では、プロジェクトにCustomControlsという名前を付けます。 このコントロールを使用するには、ページに登録する前に、これをWebサイトへの参照として追加する必要があります。 既存のプロジェクトへの参照を追加するには、プロジェクト(ソリューションではなく)を右クリックし、[参照の追加]をクリックします。
[参照の追加]ダイアログボックスの[プロジェクト]タブからCustomControlsプロジェクトを選択します。 ソリューションエクスプローラーに参照が表示されます。
ページでコントロールを使用するには、@ Pageディレクティブのすぐ下にRegisterディレクティブを追加します。
さらに、他のコントロールと同様に、コントロールを使用できます。
実行すると、次のようにコントロールのTextプロパティがブラウザーにレンダリングされます。
カスタムコントロールの使用
前の例では、カスタムコントロールのTextプロパティの値が設定されていました。 コントロールが作成されたときに、ASP.NETはデフォルトでこのプロパティを追加しました。 コントロールのファイルの背後にある次のコードはこれを明らかにしています。
上記のコードは、カスタムコントロールに対して自動的に生成されます。 イベントとメソッドをカスタムコントロールクラスに追加できます。
例
SeverControl1という名前の以前のカスタムコントロールを展開します。 それに回文をチェックする権限を与えるcheckpalindromeという名前のメソッドを与えましょう。
回文とは、逆にすると同じスペルになる単語/リテラルです。 たとえば、マラヤーラム語、マダム、サラスなど。
カスタムコントロールのコードを拡張します。次のようになります。
コントロールのコードを変更する場合は、[ビルド]→ [ソリューションのビルド]をクリックしてソリューションをビルドし、変更がプロジェクトに反映されるようにする必要があります。 テキストボックスとボタンコントロールをページに追加して、ユーザーがテキストを提供できるようにします。ボタンをクリックすると、回文がチェックされます。
ボタンのClickイベントハンドラーは、テキストをテキストボックスからカスタムコントロールのテキストプロパティに単にコピーします。
実行すると、コントロールは回文を正常にチェックします。
次の点に注意してください。
- (1)*カスタムコントロールに参照を追加すると、それがツールボックスに追加され、他のコントロールと同様にツールボックスから直接使用できます。
- (2)*カスタムコントロールクラスのRenderContentsメソッドは、独自のメソッドとイベントを追加できるため、ここでオーバーライドされます。
(3) RenderContentsメソッドは、ブラウザーでのレンダリングを担当するHtmlTextWriter型のパラメーターを受け取ります。