次の方法で共有


Web フォーム ページからユーザー コントロールへの変換

ある Web フォーム ページが開発済みで、アプリケーションを通じてその機能にアクセスする場合は、ファイルを少し修正するだけで、そのページをユーザー コントロールに変更できます。<html><body><form> の各要素はユーザー コントロールに含まれないので、コントロールを含む Web フォーム ページにこれらの要素を含める必要があります。

**警告   **分離コード クラス内でユーザー コントロールを開発している場合は、Page クラスではなく、UserControl クラスを拡張する必要があります。詳細については、「分離コード ファイル内でのユーザー コントロールの開発」を参照してください。

Web フォーム ページをユーザー コントロールに変換するには

  1. ページから <html><body><form> の各要素をすべて削除します。次の例は、この変換を示しています。

    最初の Web フォーム ページ

    <html>
    <script language="VB" runat=server>
    Sub EnterBtn_Click(Sender as Object, E as EventArgs)
       Label1.Text = "Hi " & Name.Text & " welcome to ASP.NET!"
    End Sub
    </script>
    <body>
    <h3>Web Forms Page</h3>
    <form>
        Enter Name: <asp:textbox id="Name" runat=server/>
        <asp:button Text="Enter" OnClick="EnterBtn_Click"
             runat=server/>
    <br><br>
    <asp:label id="Label1" runat=server/>
    </form>
    </body>
    </html>
    
    [C#]
    <html>
    <script language="C#" runat=server>
    void EnterBtn_Click(Object Sender, EventArgs E){
       Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
    }
    </script>
    <body>
    <h3>Web Forms Page</h3>
    <form>
        Enter Name: <asp:textbox id="Name" runat=server/>
            <asp:button Text="Enter" OnClick="EnterBtn_Click"
                runat=server/>
        <br><br>
        <asp:label id="Label1" runat=server/>
    </form>
    </body>
    </html>
    

    変換後のユーザー コントロール

    <h3> <u>User Control</u> </h3>
    <script language="VB" runat=server>
    Sub EnterBtn_Click(Sender as Object, E as EventArgs)
        Label1.Text = "Hi " & Name.Text & " welcome to ASP.NET!"
    End Sub
    </script>
        Enter Name: <asp:textbox id="Name" runat=server/>
        <asp:button Text="Enter" OnClick="EnterBtn_Click"
            runat=server/>
        <br><br>
        <asp:label id="Label1" runat=server/>
    
    [C#]
    <h3>User Control</h3>
    <script language="C#" runat=server>
    void EnterBtn_Click(Object Sender, EventArgs E){
        Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
    }
    </script>
        Enter Name: <asp:textbox id="Name" runat=server/>
        <asp:button Text="Enter" OnClick="EnterBtn_Click"
            runat=server/>
        <br><br>
        <asp:label id="Label1" runat=server/>
    
  2. Web フォーム ページ内に @ Page ディレクティブがある場合は、それを @ Control ディレクティブに変更します。

    メモ   パーサー エラーを回避するために、ページをユーザー コントロールに変換するときに、@ Page ディレクティブによってサポートされる属性のうち、@ Control ディレクティブによってサポートされない属性があればそれらを削除します。詳細については、「ディレクティブ構文」を参照してください。

  3. className 属性を @ Control ディレクティブの中に含めます。これにより、このユーザー コントロールをページまたはほかのサーバー コントロールにプログラムによって追加するときに、ユーザー コントロールの型を厳密に指定できます。

  4. コントロールに用途を示すファイル名を割り当て、ファイル名拡張子を .aspx から .ascx に変更します。

参照

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