Чи надає синтаксис Razor вагому перевагу в розмітці інтерфейсу користувача?


88

Я помітив Скотт Гатрі починає згадувати бритву на справедливий біт на своєму блозі , але я просто не так впевнений , що це добре підходить для мого стилю.

Звичайно, це досить незнайомий стиль для тих, хто звик до "стандартного" виду розмітки ASP.Net (власники місця вмісту та вбудований код), але мені здається, що це багато додаткових сторінок для управління та менш чітка розмітка для мене.

Які почуття сприймають інші люди? Це щось, на що, на вашу думку, слід серйозно розглянути підмостки нових сторінок MVC, чи це просто спроба вирішити проблему, яка не існує?


3
Я насправді думав, що синтаксис є простим для тих, хто знайомий із звичайним механізмом перегляду. Ви просто використовуєте @ замість <% і не закриваєте самородки коду ...
Jaco Pretorius

Ви можете спробувати цей конвертер . Для отримання додаткової інформації перегляньте цю публікацію в блозі .
George K

Відповіді:


153

[Застереження: Я один із розробників 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 такі:

  1. Стислий синтаксис, який дуже схожий на те, як ви пишете звичайний код C # (перегляньте наступний останній допис у блозі Філа Хаака, який порівнює Asxp із синтаксисом Razor: http://haacked.com/archive/2011/01/06/razor- syntax-quick-reference.aspx )
  2. Автоматичне кодування HTML виводу (що допомагає захистити вас від атак введення HTML)
  3. Вбудована (хоча і не 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


7
Дякуємо за дійсно чітку та ґрунтовну відповідь. Це змінює мої думки настільки, щоб надати Бритві пристойний знімок.
Phil.Wheeler

2
Аароне, ти можеш поєднувати та поєднувати Razor та Aspx, щоб, якщо ти захотів, ти міг перетворити свій проект на сторінку за раз (єдиний мінус - це те, що ти мусиш дублювати свої основні сторінки у форматі Razor, оскільки для подання Razor використовується головна сторінка aspx не підтримується)
marcind

1
Як вставити знак @ у свій HTML? наприклад <a href="mailto:john@aol.com">?
Chris S

9
@Chris Escape it:@@
BrunoLM

6
Як оновлення до цієї публікації, я використовую Razor протягом останніх трьох-чотирьох місяців, і, звикнувши до цього, не думаю, що я можу зручно повернутися до традиційної розмітки ASP.Net.
Phil.Wheeler

3

Особисто я дуже ціную зменшення кількості використовуваних символів втечі. Використання <% %>стає дуже нудним порівняно з@{} та не настільки синтаксично привабливим.

Більше того, написання цілого визначення коду позаду та сторінки спрощується до одного @model model .

Як також зазначив marcind, не завжди потрібно включати runat=server .

Загалом, я дуже вдячний за використання механізму Razor і вважаю, що це не тільки полегшує мені розробку, але й полегшує читання коду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.