Создание динамических веб-страниц с помощью Razor¶
За кулисами файлы .cshtml компилируются в обычный C# код (HTML секции кладутся в переменные типа string). Далее рассмотрим несколько наиболее используемых конструкций, а полная документация по синтаксису Razor доступна здесь.
Использование C# в шаблонах Razor¶
Одним из самых распространенных требований является отрисовка значения, вычисленного в C#.
Если код представляет собой единственную инструкцию, можно использовать символ @ перед инструкцией:
Здесь инструкция отделена от HTML-кода пробелом. Если инструкция требует пробела, используются круглые скобки:
Эти два подхода, в которых C# вычисляется и записывается непосредственно в вывод HTML, называются выражениями Razor. Если требуетс написать литерал
@, его сдваивают: @@.
Если нужно выполнить некий код C#, но не выводить значения, используется блок кода Razor:
В блоке кода нужны точки с запятой; в выражениях — нет.
Добавление циклов и условий в шаблоны Razor¶
В шаблоны Razor можно добавлять циклы и условные выражения, такие как if, for, foreach, while.
Вот пример с некоторыми из них:
@page
@model ToDoItemModel
<div>
@if (Model.IsComplete)
{
<strong>Well done, you're all done!</strong>
}
else
{
<strong>the following tasks remain:</strong>
<ul>
@foreach (var task in Model.Tasks)
{
<li>@task</li>
}
</ul>
}
</div>
Как мы видим, здесь, в зависимости от значения свойства
IsComplete, выводится либо текст, уведомляющий об отсутствии невыполненых заданий, либо генерируется список заданий для выполнения.
Визуализация HTML с помощью метода Raw¶
По умолчанию строки, передаваемые в HTML, кодируются (ampersand-encoding), чтобы избежать возможности внедрения вредоносного кода. Однако, в некоторых случаях, возможно, потребуется вывести строку “как есть”, например, если html-код был сгенерирован в рамках работы бизнес-логики. В этом случае нужно воспользоваться методом Raw свойства Html:
Дата создания : 25 сентября 2022 г.