Главная > .NET > Краткий справочник по синтаксису Razor (C#) [Перевод]

Краткий справочник по синтаксису Razor (C#) [Перевод]

Представляю вашему вниманию перевод статьи Фила Хаака (Phil Haack) «C# Razor Syntax Quick Reference».

Вчера я выступал с докладом об ASP.NET MVC и движке представлений Razor перед другой командой Microsoft и кто-то спросил: «Существует ли справочник по синтаксису Razor?».

Оказывается, доступно очень хорошее руководство по Razor, но оно сосредотечено на освещении основ веб-программирования с использованием Razor и ASP.NET Web Pages, а не только на систанксисе Razor.

Так я подумал, что хорошо было бы написать по-настоящему краткий справочник по синтаксису Razor.

Синтаксис/Пример Razor Эквивалент в Web Forms (или замечания)
Блок кода
@{
  int x = 123;
  string y = "because.";
}
<%
  int x = 123;
  string y = "because.";
%>
Выражение (c HTML-кодированием вывода)
<span>@model.Message</span>
<span><%: model.Message %></span>
Выражение (без HTML-кодирования вывода)
<span>
@Html.Raw(model.Message)
</span>
<span><%= model.Message %></span>
Объединение текста и разметки
@foreach(var item in items) {
  <span>@item.Prop</span>
}
<% foreach(var item in items) { %>
  <span><%: item.Prop %></span>
<% } %>
Смешивание кода и простого текста
@if (foo) {
  <text>Plain Text</text>
}
<% if (foo) { %>
  Plain Text
<% } %>
Смешивание кода и простого текста (альтернативный вариант)
@if (foo) {
  @:Plain Text
}
То же, что и выше.
Блок using
@using (Html.BeginForm()) {
  <input type="text" value="input here">
}
<% using (Html.BeginForm()) { %>
  <input type="text" value="input here">
<% } %>
Адрес электронной почты
Привет philha@example.com
Razor распознает основной формат адреса электронной почты и он достаточно умен, чтобы не обрабатывать @ как разделитель кода.
Явное выражение
<span>ISBN@(isbnNumber)</span>
В данном случае, мы должны явно обозначить выражение с помощью круглых скобок.
Экранирование символа @
<span>В Razor, вы
используете @@foo для
отображения значения
переменной foo</span>
@@ выводится как одиночный символ @.
Серверный комментарий
@*
Это многострочный
серверный комментарий
*@
<%--
Это многострочный
серверный комментарий
--%>
Вызов обобщенного метода
@(MyClass.MyMethod<AType>())
Используйте круглые скобки, чтобы явно указать, что это выражение.
Создание Razor-делегата
@{
  Func<dynamic, object> b =
   @<strong>@item</strong>;
}
@b("Bold this")
Порождает делегат Func<T, HelperResult>, который вы можете вызвать из Razor-разметки. Смотрите более подробную информацию в этой статье.
Смешивание выражений и текста
Здравствуйте, @title. @name.
Здравствуйте, <%: title %>. <%: name %>.
Новое в Razor версии 2.0/ASP.NET MVC 4
Условные атрибуты
<div class="@className"></div>

Когда className = null

<div></div>

Когда className = ""

<div class=""></div>

Когда className = "my-class"

<div class="my-class"></div>
Условные атрибуты с литеральными значениями
<div class="@className foo bar">
</div>

Когда className = null

<div class="foo bar"></div>

Обратите внимание, что начальный пробел перед foo удаляется.

Когда className = "my-class"

<div class="my-class foo bar">
</div>

Условные data-* атрибуты

data-* атрибуты всегда отображаются.

<div data-x="@xpos"></div>

Когда xpos = null or ""

<div data-x=""></div>

Когда xpos = "42"

<div data-x="42"></div>
Логические атрибуты
<input type="checkbox"
  checked="@isChecked" />

Когда isChecked = true

<input type="checkbox"
  checked="checked" />

Когда isChecked = false

<input type="checkbox" />
Разрешение URL-адресов с тильдой
<script src="~/myscript.js">
</script>

Когда приложение находится в /

<script src="/myscript.js">
</script>

Когда запущено в виртуальном приложении с именем MyApp

<script src="/MyApp/myscript.js">
</script>

В примере «Смешивание выражений и текста» обратите внимание на то, что Razor достаточно умен, чтобы знать, что точка в конце является буквальной пунктуацией текста и не должна рассматриваться как попытка вызова метода или свойства выражения.

Дайте мне знать, если существуют другие примеры, которые, по вашему мнению, должны быть размещены в данном справочнике. Я надеюсь, что вы посчитаете это полезным.

ОБНОВЛЕНИЕ 30.12.2012: Я добавил несколько новых примеров в таблицу новых дополнений к синтаксису Razor версии 2.0/ASP.NET MVC 4. В этом релизе Razor стал намного лучше!

Кроме того, если вы хотите узнать больше, подумайте о покупке книги «Programming ASP.NET MVC 4». Полное раскрытие информации: я один из авторов, но остальные три автора намного лучше.

Рубрики:.NET Метки: , , ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: