[Застереження: Я один із розробників Microsoft для MVC та Razor, тому я можу бути дещо упередженим :)]
Ми розробили Razor як стислу мову шаблонів, яка використовує лише мінімально необхідну кількість контрольних символів. Я б сказав, що великі частини ваших поглядів можуть бути виражені меншою кількістю символів, ніж той самий код, використовуючи "традиційний" синтаксис WebForms.
Наприклад, такий фрагмент коду в синтаксисі ASPX:
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
Можна виразити таким чином у бритві:
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
Хоча версія ASPX має 21 символ переходу ( <%
і %>
), версія Razor має лише три (@
)
Я б сказав, що переваги Razor такі:
- Стислий синтаксис, який дуже схожий на те, як ви пишете звичайний код C # (перегляньте наступний останній допис у блозі Філа Хаака, який порівнює Asxp із синтаксисом Razor: http://haacked.com/archive/2011/01/06/razor- syntax-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