Предыдущий ролик Следующий ролик  

Видео урок: Using Razor syntax

Основы ASP.NET MVC 5

В этом видео я предоставлю вам краткий обзор синтаксиса Razor и объясню, как его можно использовать для добавления в представления логики C#. Чтобы более подробно ознакомиться с процессом добавления в разметку серверного кода и использованием синтаксиса Razor вне MVC-приложения, можете посмотреть мой курс "Работа с ASP.NET" (Up and Running with ASP.NET), во второй главе которого есть видео, посвященное синтаксису Razor. Давайте снова обратимся к нашему представлению Index. То место, с которого я начинаю работу в этом видео, должно соответствовать состоянию проекта в папке Exercise files -> Chapter 2 -> Start.

Вообще нам не хотелось бы, чтобы в представлениях было слишком много логики, поскольку одним из руководящих принципов MVC является принцип разделения ответственностей. Но иногда самый простой способ динамического отображения - использование небольшого фрагмента вложенного кода C#. Итак, в самом верху этого файла можно увидеть один из вариантов применения синтаксиса Razor. Имеется символ "@" и фигурные скобки. А внутри фигурных скобок можно записывать код C#, как будто мы находимся внутри файла с расширением .cs. Здесь мы задаем значение для свойства Title объекта ViewBag, используя обычный оператор присваивания с точкой с запятой в конце.

Давайте рассмотрим еще один тип синтаксиса Razor. Внизу страницы добавим некоторый динамический текст, допустим, название браузера пользователя. Если после символа "@" сразу будет идти код C#, то этот фрагмент будет восприниматься и отображаться как строка. Синтаксис Request.Browser содержит много информации о браузере пользователя, но если мне нужно просто читабельное имя строки, то можно записать Request.Browser.Browser.

Сохраним изменения и проанализируем этот синтаксис. Как видите, движок представлений хорошо понимает, где заканчивается HTML и начинается C#, и наоборот. Например, если поставить после Browser запятую, то никаких проблем не возникнет. Кроме того, его не смутит электронный адрес, содержащий символ "@". Однако при обработке логина Twitter возникнут проблемы. Чтобы избежать этого, можно просто использовать двойной знак "@". Еще один вариант использования синтаксиса Razor - для создания однострочных вспомогательных методов, которые упрощают логику отображения.

Делается это с помощью ключевого слова "helper", позволяющего создавать методы, которые можно вызывать из другого выражения Razor или блока кода. Предположим, я хочу, чтобы суммы операций, заданные в долларах, форматировались определенным образом. Пусть отрицательные суммы будут выделяться красным цветом, а все остальные - зеленым. Можно создать метод под названием "formatAmount", который будет принимать десятичное значение. Внутри метода укажем, что первоначальное значение переменной color равно "green", но если значение параметра amount меньше нуля, то ее значение меняется на "red".

Затем можно просто ввести тот HTML, который должен порождаться этим вспомогательным методом. Для того чтобы в случае необходимости вернуться обратно к C#, можно использовать символ "@". Применим формат, который используется для валют по умолчанию. Впоследствии этот метод можно будет вызывать в любом месте страницы, даже перед объявлением вспомогательного метода. Например, создадим для начала общий список десятичных чисел. Это просто список, с помощью которого мы сможем протестировать наш код. Зададим для него некоторые суммы операций.

Целые числа могут приводиться явно или приводиться неявно как десятичные числа, но для такого числа как 25,50 должен использоваться суффикс -m, чтобы оно точно не воспринималось как тип Double. Итак, давайте отформатируем суммы этого списка, воспользовавшись циклом for each. Опять же, столь же легко, как C# внедряется в разметку, можно поместить разметку в эти блоки кода. Давайте посмотрим на нашу страницу еще раз. Необязательно ее компилировать, можно просто обновить.

Вот он наш должным образом отформатированный список сумм операций. Помимо всего перечисленного, привести движок представления в замешательство может и неотформатированный текст внутри блока кода. Как видите, он воспринимает такой текст как код C#. Избежать этого можно двумя способами. Можно заключить такой текст в теги text или использовать символ "@" и двоеточие. Внутрь блоков кода Razor можно вставлять обычный синтаксис комментариев C#, но если вам нужно закомментировать какой-то раздел всего файла представления, то можно использовать символ "@" и после него - символ звездочки, а в конце комментария - эти же символы только в обратном порядке.

Очень скоро мы рассмотрим несколько других ключевых слов, которые используются в представлениях Razor, а пока мы займемся более подробным изучением файлов макетов.