Перейти к содержанию

Создание динамических веб-страниц с помощью Razor

За кулисами файлы .cshtml компилируются в обычный C# код (HTML секции кладутся в переменные типа string). Далее рассмотрим несколько наиболее используемых конструкций, а полная документация по синтаксису Razor доступна здесь.

Использование C# в шаблонах Razor

Одним из самых распространенных требований является отрисовка значения, вычисленного в C#.
Если код представляет собой единственную инструкцию, можно использовать символ @ перед инструкцией:

<p>Copyright @DateTime.Now.Year &copy;</p>

Здесь инструкция отделена от HTML-кода пробелом. Если инструкция требует пробела, используются круглые скобки:
<p>The sum of 1 and 2 is <i>@(1 + 2)</i></p>

Эти два подхода, в которых C# вычисляется и записывается непосредственно в вывод HTML, называются выражениями Razor. Если требуетс написать литерал @, его сдваивают: @@.

Если нужно выполнить некий код C#, но не выводить значения, используется блок кода Razor:

@{
    ViewData["Title"] = "Home Page";
}

В блоке кода нужны точки с запятой; в выражениях — нет.

Добавление циклов и условий в шаблоны 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:

<li>@Html.Raw(task)</li>


Последнее обновление : 19 апреля 2023 г.
Дата создания : 25 сентября 2022 г.

Комментарии

Комментарии