Основы Razor

Для дальнейшей работы с Blazor нам необходимо немного подробнее ознакомиться с тем, что из себя представляет язык разметки Razor, который мы уже неоднократно видели и использовали при создании своего компонента Blazor.

Razor — это легкий язык разметки, основанный на HTML и C#. С помощью Razor мы можем легко переходить от HTML-разметки к коду на C# для того, чтобы определить логику рендеринга компонентов Blazor. Когда файл .razor компилируется, то вся логика рендеринга собирается в класс .NET, а имя скомпилированного класса берется из имени файла .razor (поэтому и название этого файла должно начинаться с заглавной буквы).

Пространства имен для скомпилированных классов .NET

Пространство имен для класса берется из пространства имен по умолчанию для проекта и пути к папке, или вы можете явно указать пространство имен с помощью директивы @namespace. Например, если файл компонента MyComponent.razor располагается в папке Components, а приложение называется BlazorApp, то пространство имен для компонента по умолчанию будет BlazorApp.Components.

Как работает разметка Razor

Логика рендеринга компонента создается с использованием обычной HTML-разметки с добавлением динамической логики с использованием C#. 

Символ @ используется для перехода на C# и, как правило, Razor прекрасно разбирается в том, когда вы переключились на HTML, а когда переходите на C#. Например, следующий компонент отображает HTML-тег <p>тег с текущим временем:

<p>@DateTime.Now</p>

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

<p>@(DateTime.Now)</p>

Условный оператор if

Если вам необходимо в HTML-разметке определить какую-то простую логику с использованием C#, то можно использовать следующую конструкцию условного оператора if:

@if (value == 0) 
{ 
   <p>Значение переменной равно нулю</p> 
}

Razor «понимает», когда мы переключаемся снова на HTML-код, поэтому на экран будет выведена строка «Значение переменной равно нулю».

Цикл foreach

Если в HTML-разметке нам необходимо сформировать список или вывести таблицу каких-либо значений, то можно воспользоваться циклом foreach следующим образом:

<ul> 
   @foreach (var item in items) 
   { 
       <li>@item.Text</li> 
   } 
</ul>

Аналогичным образом вы можете использовать и другие циклы, например, for, while и т.д.

Директивы Razor

Директивы Razor используются для управления различными аспектами рендеринга компонентов. Все директивы Razor начинаются с символа @. Например, с помощью директивы @namespace мы можем подключить пространство имен в проект:

@namespace BlazorApp.MyComponents

Наиболее часто используемые директивы Razor представлены в таблице ниже

Директива Описание Пример
@code Добавляет члены класса в компонент (поля, методы и т.д.)
@code
  { 
     int i = 0;
     public void Inc()
     {
        i++;
     }
  }
@layout Указывает компонент компоновки для компонента @layout MainLayout
@page Определяет маршрут для компонента @page "/calendar"
@using Указывает пространство имен для включения в область видимости @using MyComponentNamespace
@inject Внедрение службы в компонент @inject IJSRuntime JS

Атрибуты директив Razor

Razor также широко использует атрибуты директив для элементов. Атрибуты директив используются для управления различными аспектами компиляции компонентов (обработка событий, привязка данных, ссылки на компоненты и элементы и так далее). Синтаксис атрибутов следующий:

@directive(-suffix(:name))(="value")

где значения в скобках являются необязательными. Так, например, при разработке своего первого компонента Blazor мы использовали атрибут @bind:

<input type="date" @bind="data">

Наиболее широко используемые атрибуты директив Razor представлены в таблице ниже:

Атрибут Описание Пример
@attributes Определяет словарь атрибутов для HTML-элемента <input @attributes="ExtraAttributes" />
@bind Создает двустороннюю привязку данных <input type="date" @bind="data">
@on{event} Добавляет обработчик события для указанного события <button @onclick="IncrementCount">Click me!</button>

С этими и другими атрибутами в Razor мы познакомимся более подробно в следующих частях.

Итого

Razor — это достаточно простой и понятный язык разметки, с помощью которого мы можем совмещать в одном файле и HTML и код C#. Вся логика компонентов Blazor компилируется в классы .NET и, для того, чтобы определить члены классов (поля, методы, свойства и т.д.) используется блок @code{}. Используя синтаксис Razor, мы можем переключаться с HTML-разметки на код C#, устанавливать атрибуты и обработчики событий для визуальных элементов.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии