ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf

SangHoon Han
SangHoon HanWeb Developer en Nexon Korea
Microsoft Community Conference
Agenda
>Razor Syntax? 누구냐? 너는!
>일단 만나보자! Hello~ Razor!
>Step 1 – 기본 구문 정복!
>Step 2 – 집중 탐구! (애매할 때는 이렇게!)
>Power Up! – 공통 레이아웃 (Layout Page)
>Power Up! – 공통 모듈 (Helper)
>Summary
Razor Syntax? 누구냐 너는?
>웹 사이트 개발을 위한 스크립트 구문
>ASP.NET의 새로운 View 엔진
• ASP.NET MVC Framework 기본 View 엔진으로 탑재
>새로운 구문이다! 그렇지만 어색하지 않다!
• 기반 언어(C# & VB)를 그대로 지원
• 익숙한 Inline Script 형식!!! 스파게티 코드로의 퇴보? OTL
>지금까지의 스파게티 코드와는 다르다! 극~복~
• 군더더기 소스코드, 다이어트에 성공한 몸짱!
>Visual Studio와의 완벽한 호흡
• 코드 에러 검출, 코드 인텔리센스 지원 등
쉽게! 빠르게! 유연하게!
Razor Syntax? 누구냐 너는?
>Razor Syntax의 포지션
일단 만나보자! Hello~ Razor!
>남다른 Razor, 파일 확장자도 다르다!
• C#기반(.cshtml), VB기반(.vbhtml)
>Razor의 핵심 포인트는 “@” 기호
• “@” 기호를 기억하라~
@{
string greeting = "Hello~ Razor!";
}
<!DOCTYPE html>
<html>
<head>
<title>일단 만나보자! Hello~ Razor!</title>
</head>
<body>
<div>
<h1>@greeting</h1>
</div>
</body>
</html>
- 일단 만나보자! Hello~ Razor! -
Step 1 - 기본 구문 정복 (1)
>“@” 기호를 키워드로 사용하는 형식
>기반 언어의 코드 작성 문법을 그대로 사용
• 변수, 연산자, 분기문, 반복문, 제어문 등 코드 형식 일체
• 제약 조건도 동일
– 대/소문자 구분, 변수 선언의 필수화, 구문 종료 표시(“;”) 등
>코드 비하인드가 존재하지 않는 Inline Script
Step 1 - 기본 구문 정복 (2)
>코드 블록
• “{ }” 를 활용하여 블록 지정
@{ string site = "Taeyo.NET"; }
@{ string id = "itist"; }
@{
string site = "Taeyo.NET";
string id = "itist";
}
- 한 줄 형식의 코드 블록 -
- 여러 줄 형식의 코드 블록 -
Step 1 - 기본 구문 정복 (3)
>변수 출력
• “@” 기호를 변수 앞에 붙여주는 형태
• 코드 블록 안쪽 / 바깥쪽 모두 동일하게 사용
@{
string today = DateTime.Now.ToString();
<span>오늘 날짜와 시간은 @today 입니다.</span>
}
<span>오늘 날짜와 시간은 @DateTime.Now 입니다.</span>
- 코드 블록 바깥쪽에서의 변수 출력 -
- 코드 블록 안쪽에서의 변수 출력 -
Step 1 - 기본 구문 정복 (4)
>주석문
• Razor의 주석문은 서버 측 주석
– 페이지 실행 시 렌더링 되지 않음
@* 한 줄 주석문(코드 바깥쪽) *@
@*
여러 줄 주석문(코드 바깥쪽)
*@
@{
// 한 줄 주석문(코드 안쪽)
/*
여러 줄 주석문(코드 안쪽)
*/
}
- 코드 블록 바깥쪽에서의 주석 표현 -
- 코드 블록 안쪽에서의 주석 표현 -
Step 1 - 기본 구문 정복 (5)
>코드 블록 내 마크업 태그 출력
• 별다른 처리 없이 태그 형식 그대로 사용
• 닫는 태그가 반드시 필요하다는 점에 주의
@{
string site = "Taeyo.NET";
string id = "itist";
<span>
제가 활동하는 커뮤니티는 <strong>@site</strong> 이고, <br />
저의 커뮤니티 아이디는 <strong>@id</strong> 입니다.
</span>
}
@{
string site = "Taeyo.NET";
string id = "itist";
<span>
제가 활동하는 커뮤니티는 <strong>@site</strong> 이고, <br>
저의 커뮤니티 아이디는 <strong>@id</strong> 입니다.
} X
Step 1 - 기본 구문 정복 (6)
>그 외 기본적인 코드 작성 문법 모두 동일
• 기반 언어의 코드 작성 문법을 그대로 사용
• 변수, 연산자, 분기문, 반복문, 제어문 등 코드 형식 일체
@{
bool isCheck = true;
string message = string.Empty;
if (isCheck) {
message = "체크 완료!";
}
else {
message = "체크 미완료!";
}
}
- IF문 -
@{
string[] speakers =
{ "박용준", "한상훈", "이호진", "김태영" };
foreach (string item in speakers)
{
@item;
}
}
- FOREACH문 -
- 기본 구문 정복 -
Step 2 – 집중 탐구 (1)
>코드 블록 내 일반 텍스트 출력
• 코드 블록 안에서 마크업 태그가 동반되지 않은 일반 텍스
트가 존재하면 서버 측 코드로 판단
• 일반 텍스트 출력을 위한 구문 사용
– <text>일반 텍스트</text>
@{
<text>조금 늦었지만 새해 복 많이 받으세요!!</text>
}
@{
@:조금 늦었지만 새해 복 많이 받으세요!!
}
- <text></text> -
- 또 다른 일반 텍스트 출력 구문 : “@:” -
Step 2 – 집중 탐구 (2)
>“@” 기호를 출력하는 경우
• “@” 기호가 키워드이기 때문에 바로 출력은 불가
• “@” 기호를 두 번 넣어주는 방식으로 해결
• E-mail 형식인 경우에는 별다른 처리 없이 출력 가능
@{
<text>Razor Syntax의 핵심 키워드는 @@ 입니다!</text>
}
@{
<text>안녕하세요! 제 E-mail 주소는 itist@live.co.kr 입니다!!</text>
}
- “@” 기호 출력 -
- E-mail 형식 출력 -
Step 2 – 집중 탐구 (3)
>변수가 포함된 문자열에 “.” 기호를 출력하는 경우
• 변수 뒤에 “.” 기호가 있으면 접근 연산자로 판단
• “@( )” 구문을 사용해서 해결
@{
string title = "ASP";
@:MicroSoft <strong>@(title).NET</strong> MVC Framework
}
Step 2 – 집중 탐구 (4)
>안 되는 것도 있다!
• 코드 블록 지정 시 “@” 기호와 “{” 기호 사이에는 공백이나
줄 바꿈이 존재할 수 없음
• 코드 블럭 기호 ({중괄호})를 생략할 수 없음
@ {
<text>이런 형태는 안 되요!</text>
}
@
{
<text>이런 형태도 안 되구요!</text>
}
// 이런 코드 작성은 안 되요!
if (isCheck)
message = "체크 완료!";
else
message = "체크 미완료!";
// 중괄호는 필수!
if (isCheck) {
message = "체크 완료!";
} else {
message = "체크 미완료!";
}
X O
- 집중 탐구 -
Power Up! – 공통 레이아웃 (1)
>반복되는 레이아웃 컨텐츠를 재사용
• 웹 페이지의 헤더나 푸터 영역과 같이 여러 페이지에서 반
복되는 컨텐츠를 재사용
• Include(Classic ASP), MasterPage(ASP.NET)와 유사한 개념
Power Up! – 공통 레이아웃 (2)
>재사용 가능한 페이지 구성
• RenderPage()
– 해당 영역에 다른 페이지의 컨텐츠를 렌더링
public override HelperResult RenderPage( string path, params Object[] data )
Power Up! – 공통 레이아웃 (3)
>구조화된 레이아웃 구성 : 레이아웃 페이지
• Layout
– 레이아웃 페이지의 경로를 지정
• RenderBody()
– 레이아웃 페이지를 호출한 콘텐츠 페이지 렌더링
public override string Layout { get; set; }
public HelperResult RenderBody()
Power Up! – 공통 레이아웃 (4)
>페이지 별로 특정 영역 렌더링
• RenderSection()
– 레이아웃 페이지에서 명명된 섹션 컨텐츠 렌더링
public HelperResult RenderSection( string name )
public HelperResult RenderSection( string name, bool required )
Power Up! – 공통 레이아웃 (5)
>기본 레이아웃 페이지 설정하기
• _ViewStart.cshtml
– View 파일이 실행되기 이전에 먼저 실행되는 파일
– 가장 먼저 실행되기 때문에 공통적인 레이아웃 설정 가능
- 공통 레이아웃 -
Power Up! – 공통 모듈 (1)
>Helper : 도우미 메서드
• 자주 사용되는 기능 및 코드의 모듈화
• 유용한 기능의 헬퍼 추가 및 제작 가능!
기본으로 제공되는 주요 Helper
HtmlHelper HTML 관련 작업 도우미 메서드
AjaxHelper Ajax 관련 작업 도우미 메서드
UrlHelper URL 관련 작업 도우미 메서드
HtmlHelper의 주요 메서드
Raw HTML로 인코딩되지 않은 태그를 반환
Encode HTML로 인코딩된 문자열로 반환
ActionLink 지정된 가상 경로를 포함하는 앵커 요소(a) 반환
TextBox 텍스트박스 input 요소를 반환 (<Input type=“text” />)
Password 패스워드 input 요소를 반환 (<Input type=“password” />)
CheckBox 체크박스 input 요소를 반환 (<Input type=“checkbox” />)
Power Up! – 공통 모듈 (2)
>필요하다면 직접 제작한다! Custom Helper
• Helper : 특정 레이아웃을 반환하는 형태
– 자주 사용되는 폼이나 태그 양식 라이브러리
• Functions : 클래스화된 메서드 형태
– 자주 사용되는 메서드 라이브러리
• App_Code 폴더에 생성하면 프로젝트 전체에서 사용 가능
Power Up! – 공통 모듈 (3)
>Helper
• @helper { } 구문 사용
• 외부 파일로 생성시 파일명이 클래스명으로 지정됨
@* SiteHelper.cshtml : Helper 정의 *@
@helper ShowGreeting(string id) {
<p>
<strong>안녕하세요! 저는 @id 입니다!!</strong>
</p>
}
@* 페이지에서 사용 예 *@
@SiteHelper.ShowGreeting("itist“)
Power Up! – 공통 모듈 (4)
>Functions
• @functions { } 구문 사용
• 외부 파일로 생성시 파일명이 클래스명으로 지정됨
@* SiteFunctions.cshtml : Functions 정의 *@
@functions {
public static string CheckGender(string gender)
{
var value = string.Empty;
if (gender.Equals("M"))
value = "남자";
else
value = "여자“;
return value;
}
}
@* 페이지에서 사용 예 *@
<p>제 성별은 @SiteHelper.CheckGender("M") 입니다.</p>
- 공통 모듈 -
Summary
>Razor Syntax는…
• 최강의 ASP.NET MVC View 엔진!
• 무엇을 상상해도 그 이상으로 쉽다!
• 어라? 스파게티 코드로의 퇴보? No! No! 사용하기 나름!
• 미뤄오셨나요? 그렇다면 이제는 하셔야 할 때입니다!
무조건 파이팅 입니다!
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
1 de 31

Recomendados

Asp.net Razor por
Asp.net Razor Asp.net Razor
Asp.net Razor Sang Yun Kim
3.1K vistas33 diapositivas
4-1. javascript por
4-1. javascript4-1. javascript
4-1. javascriptJinKyoungHeo
643 vistas38 diapositivas
처음 시작하는 라라벨 por
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
5.4K vistas55 diapositivas
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel por
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
2.5K vistas55 diapositivas
자바야 놀자 PPT por
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPTJinKyoungHeo
5.4K vistas286 diapositivas
엄준일 04일차 HTML/Javascript 교육 por
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육준일 엄
2.6K vistas95 diapositivas

Más contenido relacionado

Similar a ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf

레일스를 이용한 애자일 웹 개발 가이드 por
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드Sukjoon Kim
1.4K vistas42 diapositivas
Programming skills 1부 por
Programming skills 1부Programming skills 1부
Programming skills 1부JiHyung Lee
7.4K vistas66 diapositivas
Java script por
Java scriptJava script
Java script영남 허
901 vistas39 diapositivas
[Week2] 데이터 스크래핑 por
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑neuroassociates
8.1K vistas51 diapositivas
Start IoT with JavaScript - 1.기초 por
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Park Jonggun
3.5K vistas12 diapositivas

Similar a ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf(20)

레일스를 이용한 애자일 웹 개발 가이드 por Sukjoon Kim
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드
Sukjoon Kim1.4K vistas
Programming skills 1부 por JiHyung Lee
Programming skills 1부Programming skills 1부
Programming skills 1부
JiHyung Lee7.4K vistas
Java script por 영남 허
Java scriptJava script
Java script
영남 허901 vistas
[Week2] 데이터 스크래핑 por neuroassociates
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑
neuroassociates8.1K vistas
Start IoT with JavaScript - 1.기초 por Park Jonggun
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
Park Jonggun3.5K vistas
Node js[stg]onimusha 20140822 por 병헌 정
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
병헌 정704 vistas
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용 por 중선 곽
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽3.7K vistas
07_Visual Shader Editor por noerror
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
noerror759 vistas
임태현, 서버점검 제로에의 도전, NDC2011 por devCAT Studio, NEXON
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
devCAT Studio, NEXON2.1K vistas
좌충우돌 ORM 개발기 2012 DAUM DEVON por Younghan Kim
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
Younghan Kim2.5K vistas
0.javascript기본(~3일차내) por Sung-hoon Ma
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
Sung-hoon Ma3.7K vistas
HTML5&CSS3 8장. 눈을 즐겁게 por Youngkwon Lee
HTML5&CSS3 8장. 눈을 즐겁게HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게
Youngkwon Lee796 vistas
청강대 특강 - 프로젝트 제대로 해보기 por Chris Ohk
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk3.2K vistas
Let'Swift 2023 Swift Macro, 어디다 쓰죠? por williciousk
Let'Swift 2023 Swift Macro, 어디다 쓰죠?Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
williciousk70 vistas
반복적인 코드 작업 자동화, Codebone으로 손쉽게 por Sungju Jin
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
Sungju Jin12.7K vistas

Más de SangHoon Han

ASP.NET Core와 Azure App Service와의 환상적인 만남 por
ASP.NET Core와 Azure App Service와의 환상적인 만남ASP.NET Core와 Azure App Service와의 환상적인 만남
ASP.NET Core와 Azure App Service와의 환상적인 만남SangHoon Han
42 vistas9 diapositivas
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights por
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application InsightsVSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application InsightsSangHoon Han
77 vistas42 diapositivas
최신 IT 트렌드, 그리고 Web을 만드는 사람들 por
최신 IT 트렌드, 그리고 Web을 만드는 사람들최신 IT 트렌드, 그리고 Web을 만드는 사람들
최신 IT 트렌드, 그리고 Web을 만드는 사람들SangHoon Han
61 vistas21 diapositivas
One ASP.NET por
One ASP.NETOne ASP.NET
One ASP.NETSangHoon Han
57 vistas20 diapositivas
ASP.NET Web API를 활용한 RESTful 서비스 개발 por
ASP.NET Web API를 활용한 RESTful 서비스 개발ASP.NET Web API를 활용한 RESTful 서비스 개발
ASP.NET Web API를 활용한 RESTful 서비스 개발SangHoon Han
113 vistas41 diapositivas
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf por
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdfSangHoon Han
81 vistas22 diapositivas

Más de SangHoon Han(20)

ASP.NET Core와 Azure App Service와의 환상적인 만남 por SangHoon Han
ASP.NET Core와 Azure App Service와의 환상적인 만남ASP.NET Core와 Azure App Service와의 환상적인 만남
ASP.NET Core와 Azure App Service와의 환상적인 만남
SangHoon Han42 vistas
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights por SangHoon Han
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application InsightsVSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights
SangHoon Han77 vistas
최신 IT 트렌드, 그리고 Web을 만드는 사람들 por SangHoon Han
최신 IT 트렌드, 그리고 Web을 만드는 사람들최신 IT 트렌드, 그리고 Web을 만드는 사람들
최신 IT 트렌드, 그리고 Web을 만드는 사람들
SangHoon Han61 vistas
ASP.NET Web API를 활용한 RESTful 서비스 개발 por SangHoon Han
ASP.NET Web API를 활용한 RESTful 서비스 개발ASP.NET Web API를 활용한 RESTful 서비스 개발
ASP.NET Web API를 활용한 RESTful 서비스 개발
SangHoon Han113 vistas
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf por SangHoon Han
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
SangHoon Han81 vistas
ASP.NET 4 New Features por SangHoon Han
ASP.NET 4 New FeaturesASP.NET 4 New Features
ASP.NET 4 New Features
SangHoon Han82 vistas
Developer`s Web Standard por SangHoon Han
Developer`s Web StandardDeveloper`s Web Standard
Developer`s Web Standard
SangHoon Han147 vistas
ASP.NET 4.0 New Features Part2 - URL Routing(ASP.NET WebForms) por SangHoon Han
ASP.NET 4.0 New Features Part2 - URL Routing(ASP.NET WebForms)ASP.NET 4.0 New Features Part2 - URL Routing(ASP.NET WebForms)
ASP.NET 4.0 New Features Part2 - URL Routing(ASP.NET WebForms)
SangHoon Han191 vistas
Blazor와 안면 트기! por SangHoon Han
Blazor와 안면 트기!Blazor와 안면 트기!
Blazor와 안면 트기!
SangHoon Han654 vistas
ASP.NET의 시작(or 재시작)을 어려워하는 이들을 위한 길라잡이 por SangHoon Han
ASP.NET의 시작(or 재시작)을 어려워하는 이들을 위한 길라잡이ASP.NET의 시작(or 재시작)을 어려워하는 이들을 위한 길라잡이
ASP.NET의 시작(or 재시작)을 어려워하는 이들을 위한 길라잡이
SangHoon Han336 vistas
어서 와~ ASP.NET Core는 처음이지? por SangHoon Han
어서 와~ ASP.NET Core는 처음이지?어서 와~ ASP.NET Core는 처음이지?
어서 와~ ASP.NET Core는 처음이지?
SangHoon Han341 vistas
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET) por SangHoon Han
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
SangHoon Han1.9K vistas
Intelligent Kiosk와 함께 떠나는 Microsoft Cognitive Services 탐험 por SangHoon Han
Intelligent Kiosk와 함께 떠나는 Microsoft Cognitive Services 탐험Intelligent Kiosk와 함께 떠나는 Microsoft Cognitive Services 탐험
Intelligent Kiosk와 함께 떠나는 Microsoft Cognitive Services 탐험
SangHoon Han515 vistas
커뮤니티와 함께하는 슬기로운 개발생활 por SangHoon Han
커뮤니티와 함께하는 슬기로운 개발생활커뮤니티와 함께하는 슬기로운 개발생활
커뮤니티와 함께하는 슬기로운 개발생활
SangHoon Han292 vistas
I am ASP.NET Core Razor Pages por SangHoon Han
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages
SangHoon Han737 vistas
크로스플랫폼으로 다시 태어난 ASP.NET Core por SangHoon Han
크로스플랫폼으로 다시 태어난 ASP.NET Core크로스플랫폼으로 다시 태어난 ASP.NET Core
크로스플랫폼으로 다시 태어난 ASP.NET Core
SangHoon Han3.4K vistas
두근두근 ASP.NET 5! por SangHoon Han
두근두근 ASP.NET 5!두근두근 ASP.NET 5!
두근두근 ASP.NET 5!
SangHoon Han3.6K vistas
크로스 플랫폼을 지향하는 Alm, 당황하지 않고 vso로 빡! 끝! por SangHoon Han
크로스 플랫폼을 지향하는 Alm, 당황하지 않고 vso로 빡! 끝!크로스 플랫폼을 지향하는 Alm, 당황하지 않고 vso로 빡! 끝!
크로스 플랫폼을 지향하는 Alm, 당황하지 않고 vso로 빡! 끝!
SangHoon Han649 vistas
이제 온라인이다! 브라우저 안으로 들어온 Visual studio! por SangHoon Han
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
SangHoon Han2.1K vistas

ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf

  • 2. Agenda >Razor Syntax? 누구냐? 너는! >일단 만나보자! Hello~ Razor! >Step 1 – 기본 구문 정복! >Step 2 – 집중 탐구! (애매할 때는 이렇게!) >Power Up! – 공통 레이아웃 (Layout Page) >Power Up! – 공통 모듈 (Helper) >Summary
  • 3. Razor Syntax? 누구냐 너는? >웹 사이트 개발을 위한 스크립트 구문 >ASP.NET의 새로운 View 엔진 • ASP.NET MVC Framework 기본 View 엔진으로 탑재 >새로운 구문이다! 그렇지만 어색하지 않다! • 기반 언어(C# & VB)를 그대로 지원 • 익숙한 Inline Script 형식!!! 스파게티 코드로의 퇴보? OTL >지금까지의 스파게티 코드와는 다르다! 극~복~ • 군더더기 소스코드, 다이어트에 성공한 몸짱! >Visual Studio와의 완벽한 호흡 • 코드 에러 검출, 코드 인텔리센스 지원 등 쉽게! 빠르게! 유연하게!
  • 4. Razor Syntax? 누구냐 너는? >Razor Syntax의 포지션
  • 5. 일단 만나보자! Hello~ Razor! >남다른 Razor, 파일 확장자도 다르다! • C#기반(.cshtml), VB기반(.vbhtml) >Razor의 핵심 포인트는 “@” 기호 • “@” 기호를 기억하라~ @{ string greeting = "Hello~ Razor!"; } <!DOCTYPE html> <html> <head> <title>일단 만나보자! Hello~ Razor!</title> </head> <body> <div> <h1>@greeting</h1> </div> </body> </html>
  • 6. - 일단 만나보자! Hello~ Razor! -
  • 7. Step 1 - 기본 구문 정복 (1) >“@” 기호를 키워드로 사용하는 형식 >기반 언어의 코드 작성 문법을 그대로 사용 • 변수, 연산자, 분기문, 반복문, 제어문 등 코드 형식 일체 • 제약 조건도 동일 – 대/소문자 구분, 변수 선언의 필수화, 구문 종료 표시(“;”) 등 >코드 비하인드가 존재하지 않는 Inline Script
  • 8. Step 1 - 기본 구문 정복 (2) >코드 블록 • “{ }” 를 활용하여 블록 지정 @{ string site = "Taeyo.NET"; } @{ string id = "itist"; } @{ string site = "Taeyo.NET"; string id = "itist"; } - 한 줄 형식의 코드 블록 - - 여러 줄 형식의 코드 블록 -
  • 9. Step 1 - 기본 구문 정복 (3) >변수 출력 • “@” 기호를 변수 앞에 붙여주는 형태 • 코드 블록 안쪽 / 바깥쪽 모두 동일하게 사용 @{ string today = DateTime.Now.ToString(); <span>오늘 날짜와 시간은 @today 입니다.</span> } <span>오늘 날짜와 시간은 @DateTime.Now 입니다.</span> - 코드 블록 바깥쪽에서의 변수 출력 - - 코드 블록 안쪽에서의 변수 출력 -
  • 10. Step 1 - 기본 구문 정복 (4) >주석문 • Razor의 주석문은 서버 측 주석 – 페이지 실행 시 렌더링 되지 않음 @* 한 줄 주석문(코드 바깥쪽) *@ @* 여러 줄 주석문(코드 바깥쪽) *@ @{ // 한 줄 주석문(코드 안쪽) /* 여러 줄 주석문(코드 안쪽) */ } - 코드 블록 바깥쪽에서의 주석 표현 - - 코드 블록 안쪽에서의 주석 표현 -
  • 11. Step 1 - 기본 구문 정복 (5) >코드 블록 내 마크업 태그 출력 • 별다른 처리 없이 태그 형식 그대로 사용 • 닫는 태그가 반드시 필요하다는 점에 주의 @{ string site = "Taeyo.NET"; string id = "itist"; <span> 제가 활동하는 커뮤니티는 <strong>@site</strong> 이고, <br /> 저의 커뮤니티 아이디는 <strong>@id</strong> 입니다. </span> } @{ string site = "Taeyo.NET"; string id = "itist"; <span> 제가 활동하는 커뮤니티는 <strong>@site</strong> 이고, <br> 저의 커뮤니티 아이디는 <strong>@id</strong> 입니다. } X
  • 12. Step 1 - 기본 구문 정복 (6) >그 외 기본적인 코드 작성 문법 모두 동일 • 기반 언어의 코드 작성 문법을 그대로 사용 • 변수, 연산자, 분기문, 반복문, 제어문 등 코드 형식 일체 @{ bool isCheck = true; string message = string.Empty; if (isCheck) { message = "체크 완료!"; } else { message = "체크 미완료!"; } } - IF문 - @{ string[] speakers = { "박용준", "한상훈", "이호진", "김태영" }; foreach (string item in speakers) { @item; } } - FOREACH문 -
  • 13. - 기본 구문 정복 -
  • 14. Step 2 – 집중 탐구 (1) >코드 블록 내 일반 텍스트 출력 • 코드 블록 안에서 마크업 태그가 동반되지 않은 일반 텍스 트가 존재하면 서버 측 코드로 판단 • 일반 텍스트 출력을 위한 구문 사용 – <text>일반 텍스트</text> @{ <text>조금 늦었지만 새해 복 많이 받으세요!!</text> } @{ @:조금 늦었지만 새해 복 많이 받으세요!! } - <text></text> - - 또 다른 일반 텍스트 출력 구문 : “@:” -
  • 15. Step 2 – 집중 탐구 (2) >“@” 기호를 출력하는 경우 • “@” 기호가 키워드이기 때문에 바로 출력은 불가 • “@” 기호를 두 번 넣어주는 방식으로 해결 • E-mail 형식인 경우에는 별다른 처리 없이 출력 가능 @{ <text>Razor Syntax의 핵심 키워드는 @@ 입니다!</text> } @{ <text>안녕하세요! 제 E-mail 주소는 itist@live.co.kr 입니다!!</text> } - “@” 기호 출력 - - E-mail 형식 출력 -
  • 16. Step 2 – 집중 탐구 (3) >변수가 포함된 문자열에 “.” 기호를 출력하는 경우 • 변수 뒤에 “.” 기호가 있으면 접근 연산자로 판단 • “@( )” 구문을 사용해서 해결 @{ string title = "ASP"; @:MicroSoft <strong>@(title).NET</strong> MVC Framework }
  • 17. Step 2 – 집중 탐구 (4) >안 되는 것도 있다! • 코드 블록 지정 시 “@” 기호와 “{” 기호 사이에는 공백이나 줄 바꿈이 존재할 수 없음 • 코드 블럭 기호 ({중괄호})를 생략할 수 없음 @ { <text>이런 형태는 안 되요!</text> } @ { <text>이런 형태도 안 되구요!</text> } // 이런 코드 작성은 안 되요! if (isCheck) message = "체크 완료!"; else message = "체크 미완료!"; // 중괄호는 필수! if (isCheck) { message = "체크 완료!"; } else { message = "체크 미완료!"; } X O
  • 19. Power Up! – 공통 레이아웃 (1) >반복되는 레이아웃 컨텐츠를 재사용 • 웹 페이지의 헤더나 푸터 영역과 같이 여러 페이지에서 반 복되는 컨텐츠를 재사용 • Include(Classic ASP), MasterPage(ASP.NET)와 유사한 개념
  • 20. Power Up! – 공통 레이아웃 (2) >재사용 가능한 페이지 구성 • RenderPage() – 해당 영역에 다른 페이지의 컨텐츠를 렌더링 public override HelperResult RenderPage( string path, params Object[] data )
  • 21. Power Up! – 공통 레이아웃 (3) >구조화된 레이아웃 구성 : 레이아웃 페이지 • Layout – 레이아웃 페이지의 경로를 지정 • RenderBody() – 레이아웃 페이지를 호출한 콘텐츠 페이지 렌더링 public override string Layout { get; set; } public HelperResult RenderBody()
  • 22. Power Up! – 공통 레이아웃 (4) >페이지 별로 특정 영역 렌더링 • RenderSection() – 레이아웃 페이지에서 명명된 섹션 컨텐츠 렌더링 public HelperResult RenderSection( string name ) public HelperResult RenderSection( string name, bool required )
  • 23. Power Up! – 공통 레이아웃 (5) >기본 레이아웃 페이지 설정하기 • _ViewStart.cshtml – View 파일이 실행되기 이전에 먼저 실행되는 파일 – 가장 먼저 실행되기 때문에 공통적인 레이아웃 설정 가능
  • 25. Power Up! – 공통 모듈 (1) >Helper : 도우미 메서드 • 자주 사용되는 기능 및 코드의 모듈화 • 유용한 기능의 헬퍼 추가 및 제작 가능! 기본으로 제공되는 주요 Helper HtmlHelper HTML 관련 작업 도우미 메서드 AjaxHelper Ajax 관련 작업 도우미 메서드 UrlHelper URL 관련 작업 도우미 메서드 HtmlHelper의 주요 메서드 Raw HTML로 인코딩되지 않은 태그를 반환 Encode HTML로 인코딩된 문자열로 반환 ActionLink 지정된 가상 경로를 포함하는 앵커 요소(a) 반환 TextBox 텍스트박스 input 요소를 반환 (<Input type=“text” />) Password 패스워드 input 요소를 반환 (<Input type=“password” />) CheckBox 체크박스 input 요소를 반환 (<Input type=“checkbox” />)
  • 26. Power Up! – 공통 모듈 (2) >필요하다면 직접 제작한다! Custom Helper • Helper : 특정 레이아웃을 반환하는 형태 – 자주 사용되는 폼이나 태그 양식 라이브러리 • Functions : 클래스화된 메서드 형태 – 자주 사용되는 메서드 라이브러리 • App_Code 폴더에 생성하면 프로젝트 전체에서 사용 가능
  • 27. Power Up! – 공통 모듈 (3) >Helper • @helper { } 구문 사용 • 외부 파일로 생성시 파일명이 클래스명으로 지정됨 @* SiteHelper.cshtml : Helper 정의 *@ @helper ShowGreeting(string id) { <p> <strong>안녕하세요! 저는 @id 입니다!!</strong> </p> } @* 페이지에서 사용 예 *@ @SiteHelper.ShowGreeting("itist“)
  • 28. Power Up! – 공통 모듈 (4) >Functions • @functions { } 구문 사용 • 외부 파일로 생성시 파일명이 클래스명으로 지정됨 @* SiteFunctions.cshtml : Functions 정의 *@ @functions { public static string CheckGender(string gender) { var value = string.Empty; if (gender.Equals("M")) value = "남자"; else value = "여자“; return value; } } @* 페이지에서 사용 예 *@ <p>제 성별은 @SiteHelper.CheckGender("M") 입니다.</p>
  • 30. Summary >Razor Syntax는… • 최강의 ASP.NET MVC View 엔진! • 무엇을 상상해도 그 이상으로 쉽다! • 어라? 스파게티 코드로의 퇴보? No! No! 사용하기 나름! • 미뤄오셨나요? 그렇다면 이제는 하셔야 할 때입니다! 무조건 파이팅 입니다!