Sing-file model에서 코드로된 <script> 블럭이 페이지에 존재했고,attributerunat="server"를 가지고 있었습니다. Sing-file model은 version2.0 에서도 이와 같은 형태로 계속해서 지원되고 있습니다. Code-behind model에서 page의 markup은 .aspx page 안에 존재하고 있고 프로그램 코드는 분리된 파일 안에 있었습니다. Version 2.0 에서는 Version1.0 에서의 code-behind model 보다 더 쉽게 작업을 진행할 수 있도록 개선되었습니다.(Sing-file Model과 Code-Behind Model에 대한 설명은 이미 지난 컬럼 에서 다루었습니다. [보기])

Changes to the Code-Behind Model
.Net Framework Version1.1 안에서 ASP.NET page를 위한 code-behind file은 Page에서 파생된 클래스로 규정된다. .aspx 페이지는 code-behind class를 통해 클래스들의 변화(기능의 실행으로 인한 것)를 표현합니다. Code-behind class는 클래스 정의를 완벽하게 합니다. ; 페이지상의 모든 컨트롤에 대한 다양한 인스턴스를 포함

Visual Studio.NET과 같은 designer-based tool로 작업한 것은 ASP.NET에서 code-behind model의 형태로 지원이 가능합니다. (다시 말해서 VisualStudio가 아닌 다른 비슷한 Visual Tool로 ASP.NET을 제작해도 Code-Behind Model의 형태가 지원이 된다는 뜻 입니다.)

Code-Behind model
에서 페이지의 마크업 부분은 .aspx 페이지 안에 존재하고, Code는 분리된 class 파일 안에서 존재하게 됩니다. 이 두개의 파일에 대한 link(소통하기 위한 방법)는 .aspx 페이지 안에서 @Page 지시자를 통해서 이루어집니다.

다음은 두 개의 파일에 대해 소통하는 방법 입니다.
 
[Vusual Basic]<%@ Page Language="vb" AutoEventWireup="false" Codebehind="SamplePage.aspx.vb" Inherit="SampleProject.SamplePage"%>

[Visual C#]

ASP.NET은 @Page지시자의 Src attribute를 이용하여 또 다른 클래스를 가지고 있는 code-behind model의 다양한
폼을 지원합니다.

Code-Behind Model for the .NET Framework Version 2.0
.Net Framework version 2.0 에서 code-behind modelpartial class라는 새로운 언어 특성을 보여준다. page에서 code-behind file은 완벽하게 클래스를 정의하지 않습니다. 그 대신에 event handler 와 같이 필요로 하는 application code를 포함합니다. code-behind partial class는 명확하게 event Binding 부분이나 인스턴스 변수들을 포함할 필요가 없습니다. ASP.NET은 markup을 컴파일 하면서 그와 동시에 이벤트를 자동으로 바인딩하고 콘트롤의 인스턴스를 알아서 추론하게 됩니다. 

[Visual Basic]
Imports Microsoft.VisualBasic
   Partial Class SamplePage_aspx
      Sub Button1_Click(sender As Object, e As EventArgs)
         Label1.Text = "Clicked at " & DateTime.Now.ToString()
      End Sub
  End Class


[C#]
using System;
Public partial class SamplePage_aspx
{
   void Button1_Click(Objectsender, EbentArgs e)
   {
      Label1.Text = "Click at " + DateTime.Now.ToString();
   }
}

(코드 상에 인스턴스 변수의 정의가 포함되어 있지 않음을 알수 있습니다.)
.aspx 페이지와 code-behind page 사이의 관계는 code-behind model과 쉽게 연관 지을 수 있다. @Page지시자 부분에서 Codebehindcompilewith로, Srcclassname으로 변경한다.

<%@ page language="VB" compilewith="SamplePage.aspx.vb"
classname="SamplePage_aspx" %>

<%@ page language="C#" compilewith="SamplePage.aspx.cs"
classname="SamplePage_aspx" %>


새로운 code-behind model은 이전 code-behind model과 다른 상속 model을 사용한다. code-behind file에 속한 partial class는 .aspx page가 combined 할 때 class가 ASP.NET 에 더해진다. 컴파인드된 class는 컴파일 되고 실행됩니다.

정리하자면...
.Net Framework Version 1.1에서는 라벨 컨트롤을 디자이너에서 추가해주면 Code-Behind file에서는 그 컨트롤에 대한 선언이 필요했지만 개선된 .Net Framework Version 2.0에서는 그럴 필요 없이 마크업 페이지가 컴파일 되면서 해당 컨트롤을 추론하고 자동으로 선언을 해준다는 점 입니다.

+ Recent posts