[Disclaimer: ฉันเป็นหนึ่งในนักพัฒนาของ Microsoft ใน MVC และ Razor ดังนั้นฉันอาจจะเอนเอียงไปบ้าง :)]
เราออกแบบ 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 มีเพียงสามตัว (@
)
ฉันจะบอกว่าข้อดีของ Razor มีดังนี้:
- ไวยากรณ์ที่กระชับซึ่งคล้ายกับวิธีที่คุณเขียนโค้ด C # ปกติมาก (ดูบล็อกโพสต์ล่าสุดโดย Phil Haack เปรียบเทียบ Asxp กับไวยากรณ์ Razor: http://haacked.com/archive/2011/01/06/razor- ไวยากรณ์ด่วน reference.aspx )
- การเข้ารหัส HTML อัตโนมัติของเอาต์พุต (ซึ่งช่วยปกป้องคุณจากการโจมตีด้วยการฉีด html)
- การตรวจสอบมาร์กอัปของคุณในตัว (แม้ว่าจะไม่ใช่ 100%) ซึ่งช่วยให้คุณหลีกเลี่ยงแท็กที่ไม่สมดุล
แนวคิดที่เกี่ยวข้องกับเพจยังสามารถจับคู่สิ่งที่คุณมีใน ASPX ได้อย่างง่ายดาย
- อย่างที่คุณเห็นรหัสแบบอินไลน์ยังคงได้รับอนุญาต
- ส่วน (ซึ่งสามารถเลือกได้) เทียบเท่ากับตัวยึดเนื้อหา
- หน้าเค้าโครงแทนหน้าต้นแบบ
- แนวคิดของมุมมองแบบเต็มและบางส่วนเหมือนกัน
@functions { ... }
บล็อกแทน <script runat="server"> ... </script>
นอกจากนี้ Razor ยังมีแนวคิดที่มีประโยชน์มากมายที่ฉันอยากจะบอกว่าดีกว่าสิ่งที่มีอยู่ใน ASPX:
@helper
ฟังก์ชันสำหรับการสร้างฟังก์ชันที่ปล่อยมาร์กอัปได้อย่างง่ายดาย
@model
คีย์เวิร์ดสำหรับระบุประเภทโมเดลมุมมองของคุณโดยไม่ต้องเขียน<%@ Page ...
คำสั่งด้วยชื่อคลาสเต็ม
ฉันอยากจะคิดว่าเราได้จัดการกับปัญหาที่แท้จริงแล้วนั่นคือเพื่อให้คุณสามารถเขียนมุมมองที่กระชับและเป็นไปตามมาตรฐานได้ง่ายขึ้นในขณะเดียวกันก็ให้วิธีการ refactor โค้ดทั่วไป
แน่นอนว่าไม่ใช่ทุกคนที่จะชอบไวยากรณ์ซึ่งเป็นเหตุผลว่าทำไมเราจึงสนับสนุนเอ็นจิ้นมุมมอง ASPX อย่างเต็มที่ นอกจากนี้คุณสามารถตรวจสอบ Spark และ NHaml ซึ่งเป็นเอ็นจิ้นมุมมองบุคคลที่สามสองตัวที่เพลิดเพลินกับชุมชนสำคัญที่ติดตาม บล็อกโพสต์ต่อไปนี้มีการเปรียบเทียบข้อเสนอต่างๆที่ดี: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx