@ Register
タグ プリフィックスとカスタム コントロールの間の関連付けを作成します。これにより、開発者は ASP.NET アプリケーション ファイル内のカスタム コントロール (Web ページ、ユーザー コントロール、マスター ページなど) を簡単に参照できるようになります。
<%@ Register tagprefix="tagprefix"
namespace="namespace"
assembly="assembly" %>
<%@ Register tagprefix="tagprefix"
namespace="namespace" %>
<%@ Register tagprefix="tagprefix"
tagname="tagname"
src="pathname" %>
属性
assembly
tagprefix 属性と関連付けた名前空間が存在するアセンブリ。メモ アセンブリ名にファイル拡張子を含めることはできません。また、assembly 属性がない場合、ASP.NET パーサーでは、アプリケーションの App_Code フォルダーにソース コードがあると仮定します。コンパイルせずに登録するコントロールのソース コードがページにある場合、ソース コードを App_Code フォルダーに配置します。実行時に App_Code フォルダーにあるソース ファイルが動的にコンパイルされます。
namespace
登録されるカスタム コントロールの名前空間。src
tagprefix:tagname ペアに関連付けられる宣言 ASP.NET ユーザー コントロールファイルの場所 (相対パスまたは絶対パス)。tagname
クラスと関連付ける任意のエイリアス。 この属性は、ユーザー コントロールにのみ使用されます。tagprefix
ディレクティブが含まれるファイルで使用されているマークアップの名前空間への短縮形参照を提供する任意のエイリアス。
解説
@ Register ディレクティブをページまたはユーザー コントロールに含めると、宣言カスタム サーバー コントロール構文を使用して、カスタム サーバー コントロールまたはユーザー コントロールをレイアウトできます。
メモ |
---|
さらに、Web.config ファイルでpages の controls 要素 (ASP.NET 設定スキーマ)を使用することにより、アプリケーションのすべてのページ上でカスタム コントロールを登録することもできます。 |
@ Register ディレクティブは、次のいずれかの場合に使用します。
カスタム サーバー コントロールを宣言によって Web ページ、ユーザー コントロール、マスター ページ、またはスキン ファイルに追加する場合 (「ASP.NET のテーマとスキン」を参照)。
ユーザー コントロールを宣言によって Web ページ、ユーザー コントロール、マスター ページ、またはスキン ファイルに追加する場合。
メモ |
---|
tagprefix 値 "mobile" は、System.Web.UI.MobileControls 名前空間で ASP.NET がモバイル Web コントロールを特定するときに使用されます。コントロールにはこのプレフィックスを使用しないようにしてください。 |
@ Register ディレクティブを使用してコントロールを参照する場合、コントロールのコードを次の場所に配置できます。
アプリケーションの App_Code フォルダーにソース コードとして配置。実行時に動的にコンパイルされます。 これは開発中に便利なオプションです。 このオプションを選択する場合、@ Register ディレクティブには assembly 属性を使用しません。
アプリケーションの Bin フォルダーにコンパイル済みアセンブリとして配置。 これは、配置した Web アプリケーションに一般的なオプションです。
グローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) にコンパイル済みで署名済みのアセンブリとして配置。 これは、複数のアプリケーションでコンパイル済みコントロールを共有する場合に一般的なオプションです。 識別文字列を assembly 属性に割り当てることで、GAC のコントロールを参照できます。 この文字列は、完全修飾型名、バージョン、公開キーのトークン、およびカルチャを含む、コントロールに関する必要な詳細情報を指定します。 GAC のカスタム コントロールへの参照を示す架空の文字列を次に示します。
<%@ Register tagprefix="custom" namespace="Mycompany.namespace" assembly="Mycompany.namespace.control, Version=1.2.3.4, PublicKeyToken=12345678abcdefgh, Culture=neutral" %>
アセンブリの参照方法の詳細については、「compilation の assemblies の add 要素 (ASP.NET 設定スキーマ)」を参照してください。
宣言ユーザー コントロールの場合は、tagname、tagprefix、および src 属性を使用します。 この最初の 2 つの属性は、ページ内でコントロールを宣言するときに、常にコロンで区切られたペア (tagprefix:tagname) として使用されます。 複数の名前空間を同じ tagname に割り当てることができます。次に例を示します。
<% @Register tagprefix="tag1" namespace="MyNamespace1"/>
<% @Register tagprefix="tag1" namespace="MyNamespace2"/>
src 属性の値は、アプリケーションのルート ディレクトリからユーザー コントロールのソース ファイルへの相対パスまたは絶対パスのいずれかです。 相対パスを指定する方が簡単です。 たとえば、アプリケーションのすべてのユーザー コントロール ファイルを、アプリケーション ルートのサブディレクトリの \usercontrol ディレクトリに保存するとします。 Usercontrol1.ascx ファイルにあるユーザー コントロールを含めるには、次のコードを @ Register ディレクティブに追加します。
Src="~\usercontrol\usercontrol1.ascx"
ティルダ (~) 文字は、アプリケーションのルート ディレクトリを表します。
メモ |
---|
ユーザー コントロールを含むページと同じディレクトリにユーザー コントロールがあるときは、src 属性の値を .ascx ファイルの名前と拡張子にする必要があります。 |
.dll ファイルとしてコンパイルしたカスタム サーバー コントロールをアプリケーションで使用するために組み込む場合は、tagprefix と共に assembly 属性および namespace 属性を使用します。 namespace 属性を設定しない場合またはこの属性に空の文字列 ("") を割り当てた場合は、パーサー エラーが発生します。
注意 |
---|
カスタム サーバー コントロールを開発するときには、そのカスタム サーバー コントロールを名前空間に含める必要があります。名前空間に含まれないカスタム サーバー コントロールには、ASP.NET ページからアクセスできません。カスタム ASP.NET サーバー コントロールの開発の詳細については、「ASP.NET カスタム サーバー コントロールの開発」を参照してください。 |
使用例
次のコード例では、@ Register ディレクティブを使用して tagprefix および tagname エイリアスを宣言すると共に src 属性を割り当て、Web ページ内のユーザー コントロールを参照します。 コードの最初の部分は、ASP.NET Calendar コントロールで構成される単純なユーザー コントロールです。 コードの 2 番目の部分は、コントロールをホストするページです。 tagprefix 属性は、タグで使用する任意のプリフィックス値を割り当てます。 tagname 属性は、ユーザー コントロールに割り当てられたクラス名の値を使用します (この属性の値は任意で、どの文字列値でも使用できますが、参照されるコントロールのクラス名を使用する必要はありません)。 src 属性は、ユーザー コントロールのソース ファイルを、アプリケーションのルート フォルダーへの相対パスとしてポイントします。 ユーザー コントロールは、プリフィックス、コロン、およびタグの名前を使用することで、ページの本文中で参照されます。<uc1:CalendarUserControl runat="server" /> という形式になります。
<%@ Control ClassName="CalendarUserControl" %>
<asp:calendar id="Calendar1" runat="server" />
<%@ Page %>
<%@ register tagprefix="uc1"
tagname="CalendarUserControl"
src="~/CalendarUserControl.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Calendar Page</title>
</head>
<body>
<form id="form1" runat="server">
<uc1:calendarusercontrol runat="server" />
</form>
</body>
</html>