- 표현부분 (웹폼의 시각적인 부분을 담당) : 태그, 서버 컨트롤, 정적 텍스트와 같이 웹 폼을 시각적으로 나타낼 수 있는 요소가 위치한다.
- 코드부분 (웹폼의 내부 로직 부분을 담당) : .NET 언어를 통해 작성한 내부 로직이 위치한다.
<script runat="server"> //내부로직 </script> 코드 부분(logic) |
<html> <body> ... </body> </html> 표현 부분 |
2. 웹 폼 코드 모델
- 단일 파일 페이지 모델 (Single-File Page Model)
코드 부분과 표현 부분이 .aspx 파일(동일한 웹 폼)에 같이 존재하는 형태.
코드와 태그를 한 곳에서 확인할 수 있으므로 쉽게 웹 폼을 분석할 수 있다.
파일간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정할 수 있다.
코드부분은 반드시<script runat="server"> </script> 태그 사이에 위치해야 한다 .
- 코드 숨김 페이지 모델 (Code-Behind Page Model)
표현 부분은 .aspx 파일, 코드 부분은 다른 클래스 파일(.cs 파일)에 놓여지는 형태.
코드 부분과 표현 부분을 완전히 구분하기 때문에 개발자가 코드를 작성하는 동안 웹 디자이너는 태그로 디자인 작업을 진행할 수 있다.
코드를 여러 페이지에 재사용할 수 있다.
<html> <body> ... </body> </html>
.aspx 파일 |
using System; using System.Data; ... public partial class Default_:Page { //내부 로직 }
.cs 파일 |
- Partial 클래스의 특징
1. ASP.NET 2.0 코드 숨김 페이지 모델에서는 C#2.0에 추가된 partial 형식이라는 새로운 언어기능을 사용하여 1.x에서 가지고 있던 상속의 복잡성, 컴파일의 복잡성 문제를 한번에 해결했다.
2. partial 형식은 클래스(또는 구조체, 인터페이스)를 두 개 이상의 소스 파일로 분할할 수 있는 기능을 말한다.
3. partial 클래스로 분할된 여러 클래스는 컴파일 시 컴파일러에 의해 합쳐진다.
4. ASP.NET 2.0의 코드 숨김파일(.cs 파일)은 partial 클래스로 정의된다.
5. parrtial 클래스로 만들어진 코드 숨김 파일에는 웹 폼으로 사용된 서버 컨트롤에 대한 변수와 이벤트 바인딩 관련 구문을 추가할 필요가 없으며 서버 컨트롤 변수와 이벤트 바인딩 관련 구문은 런타임에 컴파일러에서 모두 처리해 준다. (cf. 1.x 에서는 다 작성해줘야 함)
결과적으로 코드 숨김 파일에는 개발자가 생각하는 논리만 깔끔하게 작성하면 된다.
※ 코드 숨김 페이지 모델을 지원하지 않는 .NET 언어 : J#과 같이 partial 클래스를 지원하지 않는 .NET 언어를 사용하면 코드 숨김 페이지 모델의 웹 폼을 만들 수 없다.
3. 웹 폼 이벤트
아래와 같은 형태로 사용. (sender : 이벤트가 발생한 개체를 나타내는 개체, e : 이벤트 관련 정보를 포함하는 이벤트 개체)
Protected void Page_Load(object sender, EventArgs e)
{
}
- 웹 폼 이벤트 발행 순서
Init 이벤트 -> LoadView State 이벤트 (서버 컨트롤 정보) -> Load 이벤트 -> 서버 컨트롤 이벤트 -> PreRender 이벤트 -> SaveView State 이벤트 -> Unload 이벤트
* Init, Load, PreRender 가장 많이 사용되는 이벤트
4. 다시 게시(Postback)과 페이지 간 게시(Cross-Page Posting)
- 다시 게시 (Postback)이란 default.aspx란 페이지가 웹 서버에게 다시 default.aspx란 페이지를 요청하는 프로세스.
추가 예제(발생할 수 있는 문제) : http://beomsik.com/30061542930
- 페이지 간 게시 (Cross-Page Posting)
자신이 아닌 다른 대상 페이지로 현재 페이지를 서버로 전송하는 프로세스.
'ASP.NET' 카테고리의 다른 글
3-2 마스터 페이지 (0) | 2018.12.05 |
---|---|
3-1. 테마 (0) | 2018.12.05 |
2-2. 표준컨트롤, 서버컨트롤 (0) | 2018.12.05 |
1. 닷넷 프레임워크 (0) | 2018.12.05 |
ASP.NET Index (0) | 2018.12.05 |