[Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển của Microsoft trên MVC và Razor, vì vậy tôi có thể hơi thiên vị :)]
Chúng tôi đã thiết kế Razor trở thành một ngôn ngữ tạo mẫu ngắn gọn chỉ sử dụng số lượng ký tự điều khiển cần thiết tối thiểu. Tôi muốn nói rằng phần lớn các chế độ xem của bạn có thể được thể hiện với ít ký tự hơn so với cùng một đoạn mã bằng cách sử dụng cú pháp WebForms "truyền thống".
Ví dụ: đoạn mã sau trong cú pháp ASPX:
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
Có thể được diễn đạt như sau trong Razor:
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
Trong khi phiên bản ASPX có 21 ký tự chuyển tiếp ( <%
và %>
), phiên bản Razor chỉ có ba ký tự ( @
)
Tôi có thể nói rằng những ưu điểm của Razor như sau:
- Cú pháp ngắn gọn, rất giống với cách bạn viết mã C # thông thường (hãy xem bài đăng trên blog gần đây của Phil Haack so sánh Asxp với cú pháp Razor: http://haacked.com/archive/2011/01/06/razor- cú pháp-quick-reference.aspx )
- Mã hóa HTML tự động của đầu ra (giúp bảo vệ bạn khỏi các cuộc tấn công tiêm html)
- Tích hợp (mặc dù không phải 100%) xác thực đánh dấu của bạn, giúp bạn tránh các thẻ không cân bằng
Các khái niệm liên quan đến trang cũng dễ dàng ánh xạ từ những gì bạn có trong ASPX
- Như bạn có thể thấy mã nội tuyến vẫn được phép
- Các phần (có thể là tùy chọn) tương đương với trình giữ chỗ nội dung
- Trang bố cục thay vì trang Chính
- Các khái niệm về chế độ xem toàn bộ và từng phần giống nhau
@functions { ... }
khối thay vì <script runat="server"> ... </script>
Ngoài ra Razor có một số khái niệm hữu ích mà tôi muốn nói là tốt hơn những gì có sẵn trong ASPX:
@helper
các hàm để thực sự dễ dàng tạo các hàm phát ra đánh dấu
@model
từ khóa để chỉ định loại mô hình của chế độ xem của bạn mà không cần phải viết lệnh <%@ Page ...
với tên lớp đầy đủ
Tôi muốn nghĩ rằng chúng tôi đã giải quyết được một vấn đề thực sự, đó là cho phép bạn dễ dàng viết các dạng xem ngắn gọn và tuân thủ tiêu chuẩn đồng thời cung cấp cho bạn các cách để cấu trúc lại mã chung.
Tất nhiên, không phải ai cũng thích cú pháp, đó là lý do tại sao chúng tôi cũng hỗ trợ hoàn toàn công cụ xem ASPX. Ngoài ra, bạn có thể xem Spark và NHaml, là hai công cụ chế độ xem của bên thứ 3 được cộng đồng theo dõi đáng kể. Bài đăng trên blog sau đây có sự so sánh tốt về các dịch vụ khác nhau: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx