Посібник з Blazor

Компоненти бібліотеки класів Razor з параметрами, ChildContent фрагментами рендерингу, розповсюдженням атрибутів і тестом bUnit для кожного компонента.

Що ви створите

Невелика контактна форма — поле з міткою, кнопка надсилання, @bind-Value зв’язування, справжня поведінка клавіатури та зчитувача екрана — спочатку «гола», потім стилізована, приблизно за 10 хвилин.

Перш ніж почати

Вам потрібні git і .NET SDK 8 або новіший. Підійде будь-який проєкт Blazor — Blazor Web App, Server або WebAssembly.

Крок 1 — Отримайте код

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-blazor-headless
dotnet build
dotnet test      # bUnit — 1,400+ cases across the catalog

Компоненти живуть у src/LilyBlazorHeadless/Components/ — Button.razor, TextInput.razor — по одному файлу Razor на кожен. Посилайтеся на проєкт (або копіюйте файли) зі свого застосунку Blazor і додайте @using LilyBlazorHeadless.Components до _Imports.razor.

Крок 2 — Ваш перший компонент

<Button OnClick="Save">Save</Button>

Рендерить <button class="button">. Спільні угоди про параметри: Label ( aria-label перевизначення), CssClass (додається до базового гачка), ChildContent, і [Parameter(CaptureUnmatchedValues = true)] розповсюдження атрибутів, щоб будь-який додатковий атрибут HTML проходив далі.

Крок 3 — Складіть невелику форму

<Form OnSubmit="HandleSubmit">
  <Field Label="Full name" Required="true">
    <TextInput Id="name" Label="Full name" @bind-Value="name" Required="true" />
  </Field>
  <Button Type="submit">Save</Button>
</Form>

@code {
  private string name = "";
}

Field приймає видиму Label як власний параметр, а не як вкладений компонент мітки — передайте її один раз, на Field, і TextInputу Label надає доступну назву.

Перевірено 2026-08-29: ранній чернетковий варіант вкладав окремий компонент Label всередину Field, що рендерило дві мітки (одну порожню), оскільки Field уже рендерить власну з Label параметр — виявлено перевіркою вихідного коду компонента; Form не має власного Label параметра, тож використання <Form> у попередній чернетці виправлено — його прибрано, замість того щоб вигадувати неіснуючий атрибут. складений маршрут контактної форми — той самий шаблон, перевірений справжніми e2e- та axe-тестами.

Перевірте свою роботу: запустіть застосунок — форма виглядає простою, саме як і задумано: стилізація ще попереду. Натисніть Tab: фокус проходить через кожен елемент керування, мітка озвучується, а надсилання працює. Поведінка готова; вигляд — ваш, і він наступний.

Крок 4 — Стилізуйте

Стилізуйте клас-гачки — .button, .text-input, .label, .field — у app.css, або підключіть готову тему в App.razor / index.html:

<link rel="stylesheet" href="themes/wireframe.css" />

Крок 5 — Побачте все в дії

Приклад застосунку Blazor Web показує весь каталог зі стилями та демонстраціями, з e2e-тестами Playwright:

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-blazor-web-examples
dotnet run --project src/LilyBlazorWebExamples

Наступні кроки

Питання по дорозі? сторінка допомоги повна відповідей — а якщо якийсь крок може бути зрозумілішим, повідомте нам і ми із задоволенням покращимо посібник.