Ответ 1
[Отказ от ответственности: я являюсь одним из разработчиков 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 заключаются в следующем:
- Краткий синтаксис, который очень похож на то, как вы пишете обычный код на С# (посмотрите следующий недавний пост в блоге Фила Хаака, сравнивающий синтаксис 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