Ръководство за 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

Следващи стъпки

Въпроси по пътя? Страницата за помощ е пълна с отговори — а ако някоя стъпка може да е по-ясна, кажете ни и с радост ще подобрим ръководството.