Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

Механизм визуализации и синтаксис Razor

Механизм визуализации Razor задумывался как усовершенствование механизма визуализации Web Forms и использует Razor в качестве основного языка. Razor — это код серверной стороны, который встраивается в представление, базируется на C# и избавляет от многих неудобств, присущих механизму визуализации Web Forms. Встраивание Razor в HTML и CSS приводит к тому, что код становится намного чище и лучше для восприятия, чем в случае, когда применяется синтаксис механизма визуализации Web Forms.

Первым делом добавьте новое представление, щелкнув правой кнопкой мыши на имени каталога

Views\Home
в проекте
AutoLot.Mvc
и выбрав в контекстном меню пункт Add?New Item (Добавить?Новый элемент). В открывшемся диалоговом окне Add New Item
AutoLot.Mvc
(Добавить новый элемент —
AutoLot.Mvc
) выберите шаблон Razor View — Empty (Представление Razor — Пустое) и назначьте представлению имя
RazorSyntax.cshtml
.

На заметку! Контекстное меню, открывшееся в результате щелчка правой кнопкой мыши на

Views\Home
, содержит также пункт Add?View (Добавить?Представление). Тем не менее, его выбор приводит к переходу в то же самое диалоговое окно Add New Item.

Представления Razor, как правило, строго типизированы с использованием директивы

@model
(обратите внимание на букву
m
в нижнем регистре). Измените тип нового представления на сущность
Car
, добавив в начало файла представления такой код:

@model AutoLot.Models.Entities.Car

Поместите в верхнюю часть страницы дескриптор <

hl
>. Он не имеет ничего общего с Razor, а просто добавляет заголовок к странице:

<h1>Razor Syntax</h1>

Блоки операторов Razor открываются с помощью символа

@
и являются либо самостоятельными операторами (вроде
foreach
), либо заключаются в фигурные скобки, как демонстрируется в следующих примерах:

@for (var i = 0; i < 15; i++)

{

// Делать что-то.

}

@{

// Блок кода.

var foo = "Foo";

var bar = "Bar";

var htmlString = "<ul><li>one</li><li>two</li></ul>";

}

Чтобы вывести значение переменной в представление, просто укажите символ

@
с именем переменной, что эквивалентно вызову
Response.Write
. Как видите, при выводе напрямую в браузер после оператора нет точки с запятой:

@foo

<br />

@htmlString

<br />

@foo.@bar

<br />

В предыдущем примере две переменные комбинируются посредством точки между ними (

@foo.@bar
). Это не обычная "точечная" запись в языке С#,
предназначенная для навигации по цепочке свойств. Здесь просто значения двух переменных выводятся в поток ответа с физической точкой между ними. Если вас интересует "точечная" запись в отношении переменной, тогда примените
@
к переменной и записывайте свой код стандартным образом:

@foo.ToUpper

Если вы хотите вывести низкоуровневую HTML-разметку, тогда используйте так называемые вспомогательные функции HTML (HTML helper), которые встроены в механизм визуализации Razor. Следующая строка выводит низкоуровневую HTML-разметку:

@Html.Raw(htmlString)

<hr />

В блоках кода можно смешивать разметку и код. Строки, начинающиеся с разметки, интерпретируются как HTML, а остальные строки — как код. Если строка начинается с текста, который не является кодом, вы должны применять указатель содержимого (

@:
) или указатель блока содержимого
(<text></text>
). Обратите внимание, что строки могут меняться с одного вида на другой и наоборот. Ниже приведен пример:

@{

@:Straight Text

<div>Value:@Model.Id</div>

<text>

Lines without HTML tag

</text>

<br />

}

При желании отменить символ

@
используйте удвоенный
@
. Кроме того, механизм Razor достаточно интеллектуален, чтобы обрабатывать адреса электронной почты, поэтому отменять символ
@
в них не нужно. Если необходимо заставить Razor трактовать символ
@
подобно маркеру Razor, тогда добавьте круглые скобки:

<br />

@@foo

<br />

test@foo

<br/>

test@(foo)

<br />

Предыдущий код выводит

,
@foo
,
test@foo
и
testFoo
.

Комментарии Razor открываются с помощью

@*
и закрываются посредством
*@
:

@*

Multiline Comments

Hi.

*@

В Razor также поддерживаются внутристрочные функции. Например, следующая функция сортирует список строк:

@functions {

public static IList<string> SortList(IList<string> strings) {

var list = from s in strings orderby s select s;

return list.ToList;

Поделиться:
Популярные книги

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Жандарм 2

Семин Никита
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 2

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Треугольная шляпа. Пепита Хименес. Донья Перфекта. Кровь и песок.

Бласко Висенте Ибаньес
65. Библиотека всемирной литературы
Проза:
классическая проза
5.00
рейтинг книги
Треугольная шляпа.
Пепита Хименес.
Донья Перфекта.
Кровь и песок.

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21