답변
[면책 조항 : 저는 MVC 및 Razor의 Microsoft 개발자 중 하나이므로 약간 편견이있을 수 있습니다. :)]
Razor는 필요한 최소한의 제어 문자 만 사용하는 간결한 템플릿 언어로 설계되었습니다. “전통적인”WebForms 구문을 사용하여 동일한 코드보다 적은 수의 문자로 뷰의 많은 부분을 표현할 수 있습니다.
예를 들어 ASPX 구문의 다음 코드 조각 :
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
Razor에서 다음과 같이 표현할 수 있습니다.
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
ASPX 버전에는 21 개의 전환 문자 ( <%
및 %>
)가 있지만 Razor 버전에는 3 개 ( @
) 만 있습니다.
Razor의 장점은 다음과 같습니다.
- 일반 C # 코드를 작성하는 방법과 매우 유사한 간결한 구문 (Asxp와 Razor 구문을 비교하는 Phil Haack의 다음 최근 블로그 게시물을 확인하십시오. http://haacked.com/archive/2011/01/06/razor- 구문 -quick-reference.aspx )
- 출력의 자동 HTML 인코딩 (HTML 주입 공격으로부터 보호)
- 태그 불균형을 방지하는 데 도움이되는 마크 업의 내장 (100 %는 아님) 유효성 검사
페이지 관련 개념도 ASPX에있는 것과 쉽게 매핑됩니다.
- 보시다시피 인라인 코드는 여전히 허용됩니다.
- 섹션 (선택 사항 일 수 있음)은 콘텐츠 자리 표시 자와 동일합니다.
- 마스터 페이지 대신 레이아웃 페이지
- 전체보기와 부분보기의 개념은 동일합니다.
@functions { ... }
대신 블록<script runat="server"> ... </script>
또한 Razor에는 ASPX에서 사용할 수있는 것보다 낫다고 말할 수있는 유용한 개념이 많이 있습니다.
@helper
마크 업을 생성하는 함수를 정말 쉽게 만들 수있는 함수@model
<%@ Page ...
전체 클래스 이름으로 지시문 을 작성할 필요없이 뷰의 모델 유형을 지정하기위한 키워드
저는 우리가 실제 문제를 해결했다고 생각합니다. 이것은 여러분이 더 쉽게 간결하고 표준을 준수하는 뷰를 작성하는 동시에 공통 코드를 리팩토링하는 방법을 제공하는 것입니다.
물론 모든 사람이 구문을 선호하는 것은 아니기 때문에 ASPX 뷰 엔진도 완전히 지원하고 있습니다. 또한 중요한 커뮤니티 팔로우를 즐기는 두 개의 타사 뷰 엔진 인 Spark 및 NHaml을 확인할 수 있습니다. 다음 블로그 게시물은 여러 제품을 잘 비교 한 것입니다. http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx
답변
개인적으로 사용되는 이스케이프 문자 수를 줄이는 것에 대해 정말 감사드립니다. 사용 <% %>
은 비교할 때 매우 지루해 @{}
지며 구문 적으로 거의 매력적이지 않습니다.
또한 코드 숨김 및 페이지에 대한 전체 정의를 작성하는 것이 단일 @model model
.
marcind도 언급했듯이 항상 포함 할 필요 runat=server
가 없는 것도 매우 좋습니다.
전반적으로 Razor 엔진을 사용해 주셔서 감사 드리며, 개발이 더 쉬워 질뿐만 아니라 코드를 더 쉽게 읽을 수 있습니다.