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 model은 partial 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지시자 부분에서 Codebehind를 compilewith로, Src를 classname으로 변경한다.
<%@ 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에서는 그럴 필요 없이 마크업 페이지가 컴파일 되면서 해당 컨트롤을 추론하고 자동으로 선언을 해준다는 점 입니다.
'.net' 카테고리의 다른 글
Refactoring 기능 소개2 (0) | 2007.05.03 |
---|---|
Refactoring 기능 소개1 (향상된 생산성 (0) | 2007.05.03 |
Documents and Settings (0) | 2007.05.03 |
Visual Studio에서 웹 사이트에서 공유된 코드 사용하기 (0) | 2007.05.03 |
ASP.NET 기본 표현식 (0) | 2007.05.03 |