次の方法で共有


ユーザー コントロールの作成

テキスト エディタまたは HTML エディタを使用して、ユーザー コントロールを宣言して作成できます。ユーザー コントロールの宣言構文は、Web フォーム ページの作成時に使用される構文とよく似ています。主な違いは、ユーザー コントロールのコンテンツは、@ Page ディレクティブの代わりに @ Control ディレクティブを使用し、コンテンツの周囲には <html><body>、および <form> の各要素が含まれないことです。

Web フォーム ページの詳細とその作成方法については、「Web フォーム ページの概要」を参照してください。Web フォーム ページでユーザー コンロトールを宣言する方法については、「Web フォーム ページへのユーザー コントロールの取り込み」を参照してください。

ユーザー コントロールは、テキスト ファイル程度の簡単なものにしたり、他の ASP.NET サーバー コントロールを含んだりできます。ユーザー コントロールとそれをホストするページとの間で情報を共有する場合、そのユーザー コントロールに対してプロパティを作成できます。

アプリケーションの複数のページ上に含めることができる単純なログオン フォームを作成する手順の概要を次に示します。

ユーザー コントロールを作成するには

  1. 新しいファイルを作成し、.ascx という拡張子で名前を付けます。

    たとえば、Logonform.ascx という名前のユーザー コントロールを作成したとします。

  2. ページ最上部に @ Control ディレクティブを作成して、そのコントロールに使用するプログラミング言語を指定します (存在する場合)。

    次の例は、Visual Basic .NET をプログラミング言語として使用するページに @ Control ディレクティブを指定する例を示しています。

    <%@ Control Language="VB" %>
    

    メモ   Visual Studio .NET を使って Web アプリケーションを作成する場合は、アプリケーションのすべてのページとユーザー コントロールで同じプログラミング言語を使用する必要があります。

  3. ユーザー コントロールに表示するユーザー インターフェイス要素 (コントロール) を作成します。

  4. ユーザー コントロールとそれをホストするページとの間で情報を共有できるようにする場合は、コントロールにプロパティを作成します。

    ユーザーが名前を入力するためのテキスト ボックスと、その名前が表示されるラベルが指定された、完全なユーザー コントロールの例を次に示します。このユーザー コントロールでは、名前をホスト ページで設定できるように、Name プロパティも公開されます。

    <%@ Control Language="VB" %>
    <script runat="server">
    Public Property Name As String
       Get
           Return labelOutput.Text
       End Get
       Set
           textName.Text = Server.HtmlEncode(value)
           labelOutput.Text = Server.HtmlEncode(value)
       End Set
    End Property
    
    Public Sub buttonDisplayName_Click(sender As Object, e As EventArgs)
       labelOutput.Text = textName.Text
    End Sub
    </script>
    
    <table>
        <tbody>
            <tr>
                <td>
                    <b>Enter your name:</b></td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox id="textName" 
                        runat="server">
                    </asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:button id="buttonDisplayName" 
                       onclick="buttonDisplayName_Click" 
                       runat="server" text="Submit">
                    </asp:button>
                </td>
            </tr>
            <tr>
                <td><b>Hello, 
                     <asp:Label id="labelOutput" 
                         runat="server">
                     </asp:Label>.</b>
                </td>
            </tr>
        </tbody>
    </table>
    
    [C#]
    <%@ Control Language="C#" %>
    <script runat="server">
        public String Name {
            get
            {
                return labelOutput.Text;
            }
            set
            {
                textName.Text = Server.HtmlEncode(value);
                labelOutput.Text = Server.HtmlEncode(value);
            }
        }
    
        void buttonDisplayName_Click(object sender, EventArgs e) {
           labelOutput.Text = textName.Text;
        }
    </script>
    
    <table>
        <tbody>
            <tr>
                <td>
                    <b>Enter your name:</b></td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox id="textName" 
                        runat="server">
                    </asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:button id="buttonDisplayName" 
                       onclick="buttonDisplayName_Click" 
                       runat="server" text="Submit">
                    </asp:button>
                </td>
            </tr>
            <tr>
                <td><b>Hello, 
                     <asp:Label id="labelOutput" 
                         runat="server">
                     </asp:Label>.</b>
                </td>
            </tr>
        </tbody>
    </table>
    
    

ASP.NET Web ページにユーザー コントロールを追加する方法の詳細については、「Web フォーム ページへのユーザー コントロールの取り込み」を参照してください。

参照

Web フォーム ユーザー コントロール | Web フォーム ページへのユーザー コントロールの取り込み | Windows フォーム ページのサーバー イベント処理