分離コード ファイル内でのユーザー コントロールの開発
分離コード ファイルを使用して Web フォーム ページを作成できるのと同様に、ページが実行するロジック (分離コード ファイル) から (.aspx ファイル内の) ユーザー インターフェイス (UI) 構文を切り離す方法で、ユーザー コントロールを作成できます。技術は同じですが、わずかな違いがあります。
メモ Visual Studio .NET などの RAD (Rapid Application Development) ツールを使用して ASP.NET アプリケーションを作成している場合、このツールは、既定では分離コード技術を使用してユーザー コントロールと Web フォーム ページを構築します。Visual Studio .NET を使って Web アプリケーションを作成する場合は、アプリケーションのすべてのページとユーザー コントロールで同じプログラミング言語を使用する必要があります。
分離コード ファイルの中でユーザー コントロールを開発するには
ユーザー コントロールからアクセスする必要のある名前空間を含む分離コード ファイルを作成します。少なくとも、名前空間 System と System.Web.UI、およびユーザー コントロールが必要とするその他の名前空間を含める必要があります。
Imports System Imports System.Web.UI Imports System.Web.UI.WebControls [C#] using System; using System.Web.UI; using System.Web.UI.WebControls;
UserControl クラスから継承するクラスを宣言し、そのクラスに目的の機能を持たせるためのコードを書きます。ユーザー コントロール用に記述したイベント処理メソッドがある場合は、それらも含めます。また、ユーザー コントロールの中で使用する予定のある ASP.NET サーバー コントロールのパブリック インスタンスを宣言します。
Public Class MyCodeBehind Inherits UserControl Public Name As TextBox Public Result As Label Public Sub SubmitBtn_Click(sender As Object, e As EventArgs) Result.Text = "Hi, " & Name.Text & ", welcome to ASP.NET!" End Sub End Class [C#] public class MyCodeBehind : UserControl { public TextBox Name; public Label Result; public void SubmitBtn_Click(Object sender, EventArgs e) { Result.Text = "Hi, " + Name.Text + ", welcome to ASP.NET!"; } }
分離コード ファイルに名前を付けます。ファイルの開発に使用した言語を反映した拡張子を必ず付けてください。適切な拡張子を指定しないと、コンパイル エラーが発生します。この例では、Visual Basic で開発したユーザー コントロールに
UserControl.vb
という名前、C# で開発したユーザー コントロールにUserControl.cs
という名前を付けています。.ascx ファイルを作成し、@ Control ディレクティブを使用して、ユーザー コントロールが継承するクラスの名前と、手順 1. で作成したソース ファイルへのパスを指定します。サーバー コントロールと、ユーザー コントロールに表示するテキストを含めます。各サーバー コントロールについて ID 属性を宣言する場合は、その値が分離コードファイル内で作成したインスタンスの名前と一致することを確認してください。たとえば、次の
<asp:textbox/>
要素内の ID 属性はName
であり、手順 2. のName
TextBox サーバー コントロールと一致しています。<%@ control inherits = "MyCodeBehind" src = "UserControl.vb" %> <p>Name: <asp:textbox id="Name" runat="server"/> <br> <asp:button text="Click Me" OnClick="SubmitBtn_Click" runat="server"/><br> <asp:label id="Result" runat = "server" /> [C#] <%@ control inherits = "MyCodeBehind" src = "UserControl.cs" %> <p>Name: <asp:textbox id="Name" runat="server"/> <br> <asp:button text="Click Me" OnClick="SubmitBtn_Click" runat="server"/><br> <asp:label id="Result" runat = "server" />
ユーザー コントロールの機能を使用する場所にする Web フォーム ページに、そのコントロールを含めます。詳細については「Web フォーム ページへのユーザー コントロールの取り込み」を参照してください。
参照
Web フォーム ユーザー コントロール | Web フォームのコード モデル | Web フォーム ページへのユーザー コントロールの取り込み | @ Control | UserControl