티스토리 뷰

728x90

ASP.NET과 전통적인 ASP와의 큰 차이점중의 하나는 ASP에서는 서버 코드를 작성할 때 코드 블럭의 시작을 <%로 표시하고 블럭의 끝을 %>로 표시한 다음 블럭 내부에 VB Script로 코드를 작성 했으나 ASP.NET에서는 @문자를 사용하는 레이저(Razor) 마크업을 통해서 서버 코드로 C# 및 VB.NET 언어를 사용할 수 있다는 점입니다.

위의 그림은 웹매트릭스("무료 웹 개발도구 웹매트릭스 설치하기 - WebMatrix3" 참조)에서 페이지를 추가할 때 나오는 기본 템플릿 예제로 레이저 기반의 웹페이지를 만들 때는 CSHTML 또는 VBHTML을 선택합니다. 다시 말해서 C# 언어를 사용하는 레이저 문법을 사용할 경우에는 *.cshtml 파일명으로 코드를 작성하고 VB.NET 언어를 사용하는 레이저 문법을 사용하는 페이지를 작성할 경우에는 *.vbhtml 파일명으로 코드 작성을 시작합니다.

C# 기반의 동적 웹 페이지를 작성할 경우 서버측에서 실행할 코드 블럭은 위의 그림과 같이 @{로 시작하고 }로 끝냅니다. PHP가 <?php로 시작하고 ?>로  끝내고 ASP가 <%로 시작하고 %>로 끝내는 것과 유사합니다. @( ... } 블럭 내부의 코드는 C#의 문법을 그대로 사용하면 됩니다. 예를 들어 대소문자를 구별하고(Case sensitive) 문장 끝에 세미콜론(;)을 붙인다던가 하는 점 등 입니다. 변수 선언은 C#에서 암시적 변수 선언에 사용하는 var 키워드를 사용하면 됩니다. 

C# 코드에서 정의한 변수나 오브젝트와 시스템에서 제공하는 오브젝트들은 HTML 태그 내부에서 "@변수나 오브젝트명"의 형태로 기술하면 HTML 생성 시점에 해당 변수나 오브젝트 값으로 대치됩니다. 반대로  코드 블럭 내부에 "<a>...</a>"와 같이 시작-끝 쌍이 맞는 HTML 태그 블럭을 기술하면 자동으로 C# 코드가 아닌 HTML 페이지로 출력합니다. 단순 텍스트나 쌍이 없는 HTML 태그를 코드 내에 출력하고 싶을 경우에는 @:를 앞에 기술하면 그 이후를 코드가 아닌 HTML로 인식하도록 지시할 수 있습니다.

VB.NET 기반의 동적 웹 페이지를 작성할 경우의 코드 블럭은 위의 그림과 같이 @Code로 시작하고 End Code로 끝냅니다. 대소문자를 가리지 않고 변수 선언에 Dim을 사용하는 등 VB.NET의 문법을 그대로 사용합니다. 

VB.NET 코드에서 정의한 변수나 오브젝트와 시스템에서 제공하는 오브젝트들은 HTML 태그 내부에서 "@변수나 오브젝트명"의 형태로 기술하면 HTML 생성 시점에 해당 변수나 오브젝트 값으로 대치됩니다. 반대로  코드 블럭 내부에  "@<p>...</p>"와 같이 시작-끝 쌍이 맞는 HTML 태그 블럭을 앞에 @를 붙여서 기술하면 자동으로 VB.NET 코드가 아닌 HTML 페이지로 출력합니다. 단순 텍스트나 쌍이 없는 HTML 태그를 코드 내에 출력하고 싶을 경우에는 @:를 앞에 기술하면 그 이후를 코드가 아닌 HTML로 인식하도록 지시할 수 있습니다.

C#과 VB.NET 레이저 문법에서 @* ... *@ 블럭 내부에 있는 내용은 동일하게 주석 처리 합니다. 단, 코드 블럭 내부의 주석 처리는 C#의 주석 처리, VB.NET의 주석 처리  문법을 그대로 사용할 수 있습니다. 레이저 문법을 접해보고 나니 참 편리하게 동적 웹페이지를 작성할 수 있겠다 싶습니다.

레이저(Razor)는 2010년 처음 소개된 이래 2012년 V2가 소개되었고 현재는 V3를 배포하고 있는 오픈 소스 프로젝트(아파치 라이선스)로 진행하고 있는 웹 프레임워크 입니다.

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함