다음을 통해 공유


ASP.NET의 코드 블록

업데이트: 2007년 11월

ASP.NET 단일 파일 페이지 모델은 코드를 포함하는 스크립트 블록이 HTML 앞에 오고 HTML에 특수 태그를 사용할 수 있다는 점에서 ASP(Active Server Pages) 페이지 구조와 비슷합니다. 이 항목에서는 ASP 코드를 ASP.NET으로 업데이트하는 것과 관련된 몇 가지 내용에 대해 설명합니다.

ASP.NET 코드 숨김 페이지 모델은 스크립트 블록 코드를 HTML 및 ASP.NET 태그와 구분합니다. 자세한 내용은 ASP.NET 웹 페이지 구문 개요를 참조하십시오. 컨트롤 속성 값을 데이터에 바인딩할 수 있도록 하는 데이터 바인딩 구문에 대한 자세한 내용은 데이터 바인딩 식 개요를 참조하십시오.

변수 및 프로시저 선언

모든 ASP.NET 프로시저와 전역 변수는 ASP <%...%> 스타일 구분 기호 사이가 아닌 여는 <html> 태그 앞에 배치된 <script > 블록 내에 선언해야 합니다. 변수를 <%...%> 렌더링 블록에 선언할 수는 있지만 이렇게 선언한 변수는 페이지의 다른 렌더링 블록에서만 액세스할 수 있으며 다른 함수나 프로시저에서는 전역으로 액세스할 수 없습니다. 페이지에 script 블록이 두 개 이상 포함될 수 있지만 페이지의 모든 블록에서 프로그래밍 언어가 같아야 합니다.

다음은 스크립트 및 렌더링 블록에 변수와 프로시저를 선언하는 ASP.NET 페이지에 대한 코드 예제입니다. ASP.NET 페이지에 URL 형태로 쿼리 문자열을 전달하면 페이지에 쿼리 문자열이 표시됩니다.

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
    ' The following variables are visible to all procedures 
    ' within the <script> block.
    Dim str As String
    Dim i, i2 As Integer

    Function DoubleIt(ByVal inpt As Integer) As Integer
        ' The following variable is visible only within 
        ' the DoubleIt procedure.
        Dim factor As Integer = 2

        DoubleIt = inpt * factor
    End Function
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
    <% 
        ' The following local variable is visible only within this
        ' and other render blocks on the page.
        Dim myVar

        myVar = Request.QueryString
        Response.Write("The querystring is " _
           & Server.HtmlEncode(myVar.ToString()))
    %>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
    // The following variables are visible to all procedures 
    // within the <script> block.
    String str;
    int i;
    int i2;

    int DoubleIt(int inpt)
    {
        // The following variable is visible only within 
        // the DoubleIt procedure.
        int factor = 2;

        return inpt * factor;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
    <% 
      // The following local variable is visible only within this
      // and other render blocks on the page.
      object myVar;

      myVar = Request.QueryString;
      Response.Write("The querystring is " + 
         Server.HtmlEncode(myVar.ToString()));
    %>
    </div>
    </form>
</body>
</html>

텍스트 렌더링

ASP.NET에서는 렌더링 기능이 지원되지 않습니다. 다음 코드 예제와 같이 이전 버전의 ASP를 사용하면 리터럴 HTML을 프로시저 본문에 삽입할 수 있습니다.

   <% Sub SomeProcedure() %>
   <H3> Render this line of bold text. </H3>
   <% End Sub %>

이 코드를 ASP.NET 페이지에서 사용하면 오류가 발생합니다. ASP.NET 페이지에서는 다음과 같이 코드를 작성해야 합니다.

   <script runat=server>
      Sub SomeProcedure()
         Response.Write("<H3> Render this line in bold text.</H3>")
      End Sub
   </script>

전역 변수 선언을 제외하고 <script>¢¢ç¦</script> 태그에 포함된 모든 코드는 프로시저 내에서 캡슐화되어야 합니다.

페이지 처리, 로드 및 언로드

ASP에서는 코드가 <%...%> 태그 내에 포함되며 첫 번째 <%> 태그 다음에 나오는 첫 번째 문부터 페이지 처리가 시작됩니다. ASP.NET에서는 페이지가 로드되는 즉시 처리할 코드가 Page_Load 내장 이벤트 내에 포함되어 있어야 합니다. <%...%> 블록 내에 코드를 작성할 수는 있지만 이렇게 작성한 코드는 페이지가 로드된 후 ASP에서와 같이 하향식으로 렌더링 타임에 실행됩니다. 초기화 코드를 실행해야 할 경우에는 이 코드가 Page_Load 이벤트에 나와야 합니다. 이 이벤트는 다음 코드 예제와 같이 ASP.NET 엔진이 페이지를 로드한 직후에 발생됩니다.

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        ' Place all startup code here, including initialization of 
        ' variables,  preloading of controls, and loading of 
        ' data from a database.
        If Page.IsPostBack Then
            Response.Write("<br />Page has been posted back.")
        End If

    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
    Hello.<br />
    <asp:Button ID="Button1"  
    Text="Click to Post Back" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br />Page has been posted back.");
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
    Hello.<br />
    <asp:Button ID="Button1"  
    Text="Click to Post Back" />
    </div>
    </form>
</body>
</html>

관련된 Page_Unload 내장 이벤트는 페이지 실행 주기 중에 항상 맨 마지막에 발생되며 페이지 정리 코드를 실행하는 데 사용될 수 있습니다.

자세한 내용은 ASP.NET 페이지 수명 주기 개요ASP.NET 웹 서버 컨트롤 이벤트 모델을 참조하십시오.

참고 항목

개념

ASP.NET 페이지 클래스 개요

ASP.NET 웹 페이지 코드 모델

ASP.NET 웹 페이지의 클라이언트 스크립트

ASP.NET 웹 페이지 구문 개요

ASP.NET 페이지 수명 주기 개요

ASP.NET 웹 서버 컨트롤 이벤트 모델

기타 리소스

ASP.NET으로 마이그레이션