← ClaudeAtlas

aspnet-blazorlisted

Blazor Server, WebAssembly, and United (Auto) with components, interop, and render modes. Covers .NET 8+ Blazor patterns. USE WHEN: user mentions "Blazor", "Blazor Server", "Blazor WASM", "Blazor WebAssembly", "Blazor components", "render modes", "Blazor interop" DO NOT USE FOR: Angular components - use `angular`, React components - use `react`, Svelte - use `svelte`
claude-dev-suite/claude-dev-suite · ★ 33 · AI & Automation · score 80
Install: claude install-skill claude-dev-suite/claude-dev-suite
# ASP.NET Blazor - Quick Reference > **Deep Knowledge**: Use `mcp__documentation__fetch_docs` with technology: `blazor` for comprehensive documentation. ## Render Modes (.NET 8+) | Mode | Description | Use For | |------|-------------|---------| | `InteractiveServer` | Server-side via SignalR | Internal apps, real-time | | `InteractiveWebAssembly` | Client-side WASM | Offline, no server dependency | | `InteractiveAuto` | Server first, then WASM | Best of both worlds | | Static SSR (default) | No interactivity | Content pages, SEO | ```razor @* Page-level render mode *@ @rendermode InteractiveServer @* Component-level *@ <Counter @rendermode="InteractiveWebAssembly" /> ``` ## Component Pattern ```razor @* Counter.razor *@ <h3>Counter</h3> <p>Count: @count</p> <button @onclick="Increment">Click me</button> @code { private int count = 0; [Parameter] public int InitialCount { get; set; } = 0; [Parameter] public EventCallback<int> OnCountChanged { get; set; } protected override void OnInitialized() { count = InitialCount; } private async Task Increment() { count++; await OnCountChanged.InvokeAsync(count); } } ``` ## Forms with Validation ```razor <EditForm Model="user" OnValidSubmit="HandleSubmit" FormName="UserForm"> <DataAnnotationsValidator /> <ValidationSummary /> <InputText @bind-Value="user.Name" class="form-control" /> <ValidationMessage For="@(() => user.Name)" /> <InputT