Blazor-handleiding

Razor-klassenbibliotheekcomponenten met parameters, ChildContent renderfragmenten, attribute splatting en een bUnit-test per component.

Wat je gaat bouwen

Een klein contactformulier — invoerveld met label, verzendknop, @bind-Value -binding, echt toetsenbord- en schermlezergedrag — eerst kaal, dan vormgegeven, in ongeveer 10 minuten.

Voordat je begint

Je hebt git en de .NET SDK 8 of nieuwer nodig. Elk Blazor-project werkt — Blazor Web App, Server of WebAssembly.

Stap 1 — Haal de code op

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

De componenten staan in src/LilyBlazorHeadless/Components/ — Button.razor, TextInput.razor — elk één Razor-bestand. Verwijs vanuit je Blazor-app naar het project (of kopieer de bestanden) en voeg @using LilyBlazorHeadless.Components toe aan _Imports.razor.

Stap 2 — Je eerste component

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

Rendert <button class="button">. De gedeelde parameterconventies: Label (een aria-label om te overschrijven), CssClass (wordt aan de basishaak toegevoegd), ChildContenten [Parameter(CaptureUnmatchedValues = true)] attribute splatting zodat elk extra HTML-attribuut wordt doorgegeven.

Stap 3 — Stel een klein formulier samen

<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 neemt het zichtbare Label als eigen parameter in plaats van een geneste labelcomponent — geef het één keer door, op Fielden TextInputvan Label levert de toegankelijke naam.

Geverifieerd op 2026-08-29: een eerder concept nestelde een aparte Label -component in Field, wat twee labels (een leeg) rendert omdat Field zijn eigen label al rendert vanuit de Label -parameter — ontdekt door de broncode van de component te controleren; Form heeft zelf geen Label -parameter, dus het gebruik van <Form> in het eerdere concept is gecorrigeerd door het weg te laten in plaats van een niet-bestaand attribuut te verzinnen. De samengestelde contactformulierroute is hetzelfde patroon, beproefd met echte e2e- en axe-tests.

Controleer je werk: start de app en het formulier ziet er kaal uit — precies zoals bedoeld: de vormgeving komt nog. Druk op Tab: de focus beweegt door elk bedieningselement, het label wordt voorgelezen en verzenden werkt. Het gedrag is klaar; het uiterlijk is aan jou en komt hierna.

Stap 4 — Geef het vorm

Geef de klassehaken vorm — .button, .text-input, .label, .field — in app.css, of koppel een kant-en-klaar thema in App.razor / index.html:

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

Stap 5 — Zie alles werken

Blazor Web voorbeeld-app toont de volledige catalogus vormgegeven en gedemonstreerd, met Playwright e2e-tests:

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

Volgende stappen

  • Thema's — wisselen tijdens het draaien met de Blazor-helper theme-picker (een Razor-klassenbibliotheek op NuGet).
  • Voorkeurenhelpers — taal en tekstgrootte.
  • Componentencatalogus — props, ARIA en toetsenbord per component.

Vragen onderweg? De helppagina staat vol antwoorden — en als een stap duidelijker kan, laat het ons weten en we verbeteren de handleiding graag.