方法 : Web フォーム ページを ASP.NET ユーザー コントロールに変換する

更新 : 2007 年 11 月

ASP.NET Web ページの開発後、アプリケーション全体でそのページの機能にアクセスする必要が生じた場合は、ファイルを少し修正するだけでユーザー コントロールに変更できます。

単一ファイルの ASP.NET Web ページをユーザー コントロールに変換するには

  1. ファイル名の拡張子が .ascx になるようにコントロールの名前を変更します。

  2. ページから html、body、form の各要素を削除します。

  3. @ Page ディレクティブを @ Control ディレクティブに変更します。

  4. Language、AutoEventWireup (存在する場合)、CodeFile、および Inherits の各属性を除く、@ Control ディレクティブのすべての属性を削除します。

  5. @ Control ディレクティブに className 属性を追加します。これによって、このユーザー コントロールをページに追加するときに、ユーザー コントロールの型を厳密に指定できます。

分離コードの ASP.NET Web ページをユーザー コントロールに変換するには

  1. .aspx ファイルの拡張子が .ascx になるように名前を変更します。

  2. 分離コード ファイルが記述されているプログラミング言語に基づいて、ファイル名の拡張子を .ascx.vb または .ascx.cs に変更します。

  3. 分離コード ファイルを開き、継承するクラスを Page から UserControl に変更します。

  4. .aspx ファイルで、次の作業を行います。

    1. ページから html、body、form の各要素を削除します。

    2. @ Page ディレクティブを @ Control ディレクティブに変更します。

    3. Language、AutoEventWireup (存在する場合)、CodeFile、および Inherits の各属性を除く、@ Control ディレクティブのすべての属性を削除します。

    4. 名前を変更した分離コード ファイルを指すように、@ Control ディレクティブの CodeFile 属性を変更します。

  5. @ Control ディレクティブに className 属性を追加します。これによって、このユーザー コントロールをページに追加するときに、ユーザー コントロールの型を厳密に指定できます。

使用例

元の単一ファイルの ASP.NET Web ページおよびページを変換した後のユーザー コントロールのコード例を次に示します。

2x6sx01c.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

この例には、ユーザー入力を受け付けるテキスト ボックスがあるため、セキュリティ上の脅威になる可能性があります。既定では、ASP.NET Web ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。

<%@ Page Language="VB" %>
<html>
<script 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> <u>Web Forms Page</u> </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>
<%@ Page Language="C#" %>
<html>
<script runat=server>
void EnterBtn_Click(Object sender, EventArgs e)
{
    Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
}
</script>
<body>
<h3> <u>Web Forms Page</u> </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>
<%@ Control Language="VB" ClassName="SampleUserControl" %>
<h3> <u>User Control</u> </h3>
<script 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/>
<%@ Control Language="C#" ClassName="SampleUserControl" %>
<h3> <u>User Control</u> </h3>
<script 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/>

参照

処理手順

方法 : ASP.NET ユーザー コントロールを作成する

概念

ASP.NET ユーザー コントロールの概要