방법: Web Forms 페이지를 ASP.NET 사용자 정의 컨트롤로 변환

Visual Studio 2010

업데이트: 2007년 11월

ASP.NET 웹 페이지를 개발한 후 응용 프로그램 전체에서 웹 페이지의 기능에 액세스할 수 있게 하려면 페이지를 약간 수정하여 사용자 정의 컨트롤로 변경하면 됩니다.

단일 파일 ASP.NET 웹 페이지를 사용자 정의 컨트롤로 변환하려면

  1. 파일 이름 확장명이 .ascx가 되도록 컨트롤의 이름을 바꿉니다.

  2. 페이지에서 html, bodyform 요소를 제거합니다.

  3. @ Page 지시문을 @ Control 지시문으로 변경합니다.

  4. Language, AutoEventWireup(있는 경우), CodeFileInherits를 제외한 @ Control 지시문의 모든 특성을 제거합니다.

  5. @ Control 지시문에 className 특성을 포함합니다. 이렇게 하면 사용자 정의 컨트롤이 페이지에 추가될 때 강력한 형식으로 설정됩니다.

코드 숨김 ASP.NET 웹 페이지를 사용자 정의 컨트롤로 변환하려면

  1. 파일 이름 확장명이 .ascx가 되도록 .aspx 파일의 이름을 바꿉니다.

  2. 코드 숨김 파일이 있는 프로그래밍 언어에 따라 파일 이름 확장명이 .ascx.vb 또는 .ascx.cs가 되도록 코드 숨김 파일의 이름을 바꿉니다.

  3. 코드 숨김 파일을 열고 Page에서 상속되는 클래스를 UserControl로 변경합니다.

  4. .aspx 파일에서 다음 작업을 수행합니다.

    1. 페이지에서 html, bodyform 요소를 제거합니다.

    2. @ Page 지시문을 @ Control 지시문으로 변경합니다.

    3. Language, AutoEventWireup(있는 경우), CodeFileInherits를 제외한 @ Control 지시문의 모든 특성을 제거합니다.

    4. @ Control 지시문에서 이름을 바꾼 코드 숨김 파일을 가리키도록 CodeFile 특성을 변경합니다.

  5. @ Control 지시문에 className 특성을 포함합니다. 이렇게 하면 사용자 정의 컨트롤이 페이지에 추가될 때 강력한 형식으로 설정됩니다.

다음 예제에서는 원래 형식으로 된 단일 파일 ASP.NET 웹 페이지 및 페이지를 변환한 후의 결과 사용자 정의 컨트롤을 보여 줍니다.

2x6sx01c.alert_security(ko-kr,VS.100).gif보안 정보:

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 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="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/>
표시: