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