Blazor-handledning
Komponenter i ett Razor-klassbibliotek med parametrar, ChildContent
renderingsfragment, attribut-splatting och ett bUnit-test per komponent.
Det här bygger du
Ett litet kontaktformulär — fält med etikett, skicka-knapp,
@bind-Value -bindning, verkligt tangentbords- och skärmläsarbeteende — först naket, sedan formgivet, på ungefär 10 minuter.
Innan du börjar
Du behöver git och .NET SDK 8 eller senare. Alla Blazor-projekt fungerar — Blazor Web App, Server eller WebAssembly.
Steg 1 — Hämta koden
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
Komponenterna finns i src/LilyBlazorHeadless/Components/ —
Button.razor, TextInput.razor — en Razor-fil vardera. Referera till projektet (eller kopiera filerna) från din Blazor-app och lägg till @using LilyBlazorHeadless.Components i
_Imports.razor.
Steg 2 — Din första komponent
<Button OnClick="Save">Save</Button>
Renderar <button class="button">. De gemensamma parameterkonventionerna: Label (ett aria-label för att åsidosätta),
CssClass (läggs till på baskroken),
ChildContentoch
[Parameter(CaptureUnmatchedValues = true)] attribut-splatting så att varje extra HTML-attribut skickas igenom.
Steg 3 — Sätt ihop ett litet formulär
<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 tar den synliga Label som sin egen parameter i stället för en nästlad etikettkomponent — skicka den en gång, på
Fieldoch TextInputfrån
Label ger det tillgängliga namnet.
Verifierat 2026-08-29: ett tidigare utkast nästlade en separat Label -komponent i Field, vilket renderar två etiketter (en tom) eftersom Field
redan renderar sin egen från Label -parameter — upptäckt genom att granska komponentens källkod; Form har själv ingen Label -parameter, så det tidigare utkastets användning av
<Form> rättades till att utelämna den i stället för att hitta på ett attribut som inte finns.
Den sammansatta kontaktformulärsrutten
är samma mönster, prövat med riktiga e2e- och axe-tester.
Kontrollera ditt arbete: kör appen så ser formuläret kargt ut — precis som tänkt: formgivningen återstår. Tryck på Tab: fokus flyttas genom varje kontroll, etiketten läses upp och inskickning fungerar. Beteendet är klart; utseendet är ditt och kommer härnäst.
Steg 4 — Formge det
Formge klasskrokarna — .button, .text-input,
.label, .field — i app.css, eller länka ett färdigt tema i App.razor /
index.html:
<link rel="stylesheet" href="themes/wireframe.css" />
Steg 5 — Se allt fungera
Exempelappen Blazor Web visar hela katalogen formgiven och demonstrerad, med Playwright e2e-tester:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-blazor-web-examples
dotnet run --project src/LilyBlazorWebExamples
Nästa steg
- Teman — byte under körning med Blazor-hjälparen theme-picker (ett Razor-klassbibliotek på NuGet).
- Inställningshjälpare — språk och textstorlek.
- Komponentkatalog — egenskaper, ARIA och tangentbord per komponent.
Frågor på vägen? Hjälpsidan är full av svar — och om ett steg kan bli tydligare, berätta för oss så förbättrar vi gärna handledningen.