次の方法で共有


@ Register

更新 : 2007 年 11 月

タグ プリフィックスとカスタム コントロールの間の関連付けを作成します。これにより、開発者は ASP.NET アプリケーション ファイル内のカスタム コントロール (Web ページ、ユーザー・コントロール、マスタ・ページなど) を簡単に参照できるようになります。

<%@ Register tagprefix="tagprefix"
   namespace="namespace"
   assembly="assembly" %>
<%@ Register tagprefix="tagprefix"
   namespace="namespace" %>
<%@ Register tagprefix="tagprefix"
   tagname="tagname"
   src="pathname" %>

属性

  • assembly
    tagprefix 属性と関連付けた名前空間が存在するアセンブリ。

    c76dd5k1.alert_note(ja-jp,VS.90).gifメモ :

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

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

  • src
    tagprefix:tagname ペアに関連付けられる宣言 ASP.NET ユーザー コントロールファイルの場所 (相対パスまたは絶対パス)。

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

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

解説

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

c76dd5k1.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

c76dd5k1.alert_note(ja-jp,VS.90).gifメモ :

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" 

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

c76dd5k1.alert_note(ja-jp,VS.90).gifメモ :

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

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

c76dd5k1.alert_caution(ja-jp,VS.90).gif注意 :

カスタム サーバー コントロールを開発するときには、そのカスタム サーバー コントロールを名前空間に含める必要があります。名前空間に含まれないカスタム サーバー コントロールには、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>

参照

概念

ASP.NET Web ページの構文の概要

参照

ディレクティブ構文

その他の技術情報

ASP.NET ユーザー コントロール