この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

@ 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 属性と関連付けた名前空間が存在するアセンブリ。

Note Note

アセンブリ名にファイル拡張子を含めることはできません。 また、assembly 属性がない場合、ASP.NET パーサーでは、アプリケーションの App_Code フォルダーにソース コードがあると仮定します。 コンパイルせずに登録するコントロールのソース コードがページにある場合、ソース コードを App_Code フォルダーに配置します。 実行時に App_Code フォルダーにあるソース ファイルが動的にコンパイルされます。

namespace

登録されるカスタム コントロールの名前空間。

src

tagprefix:tagname ペアに関連付けられる宣言 ASP.NET User Controlsファイルの場所 (相対パスまたは絶対パス)。

tagname

クラスと関連付ける任意のエイリアス。 この属性は、ユーザー コントロールにのみ使用されます。

tagprefix

ディレクティブが含まれるファイルで使用されているマークアップの名前空間への短縮形参照を提供する任意のエイリアス。

@ Register ディレクティブをページまたはユーザー コントロールに含めると、宣言カスタム サーバー コントロール構文を使用して、カスタム サーバー コントロールまたはユーザー コントロールをレイアウトできます。

Note Note

さらに、Web.config ファイルでpages の controls 要素 (ASP.NET 設定スキーマ)を使用することにより、アプリケーションのすべてのページ上でカスタム コントロールを登録することもできます。

@ Register ディレクティブは、次のいずれかの場合に使用します。

  • カスタム サーバー コントロールを宣言によって Web ページ、ユーザー コントロール、マスター ページ、またはスキン ファイルに追加する場合 (「ASP.NET Themes Overview」を参照)。

  • ユーザー コントロールを宣言によって Web ページ、ユーザー コントロール、マスター ページ、またはスキン ファイルに追加する場合。

Note Note

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 設定スキーマ)」を参照してください。

宣言ユーザー コントロールの場合は、tagnametagprefix、および src 属性を使用します。 この最初の 2 つの属性は、ページ内でコントロールを宣言するときに、常にコロンで区切られたペア (tagprefix:tagname) として使用されます。 複数の名前空間を同じ tagname に割り当てることができます。次に例を示します。

<% @Register tagprefix="tag1" namespace="MyNamespace1"/>
<% @Register tagprefix="tag1" namespace="MyNamespace2"/> 

src 属性の値は、アプリケーションのルート ディレクトリからユーザー コントロールのソース ファイルへの相対パスまたは絶対パスのいずれかです。 相対パスを指定する方が簡単です。 たとえば、アプリケーションのすべてのユーザー コントロール ファイルを、アプリケーション ルートのサブディレクトリの \usercontrol ディレクトリに保存するとします。 Usercontrol1.ascx ファイルにあるユーザー コントロールを含めるには、次のコードを @ Register ディレクティブに追加します。

Src="~\usercontrol\usercontrol1.ascx" 

ティルダ (~) 文字は、アプリケーションのルート ディレクトリを表します。

NoteNote

ユーザー コントロールを含むページと同じディレクトリにユーザー コントロールがあるときは、src 属性の値を .ascx ファイルの名前と拡張子にする必要があります。

.dll ファイルとしてコンパイルしたカスタム サーバー コントロールをアプリケーションで使用するために組み込む場合は、tagprefix と共に assembly 属性および namespace 属性を使用します。 namespace 属性を設定しない場合またはこの属性に空の文字列 ("") を割り当てた場合は、パーサー エラーが発生します。

Caution メモ注意

カスタム サーバー コントロールを開発するときには、そのカスタム サーバー コントロールを名前空間に含める必要があります。 名前空間に含まれないカスタム サーバー コントロールには、ASP.NET ページからアクセスできません。 カスタム ASP.NET サーバー コントロールの開発の詳細については、「Developing Custom ASP.NET Server Controls」を参照してください。

次のコード例では、@ 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>
表示: