Core Feature
Event System
Decouple your UI components. Controllers trigger events, handlers update the UI.
The Problem
Controllers become "God Objects" that know too much about the UIโevery action explicitly updates every affected component.
The Solution
Invert the dependency. Controllers trigger events. Independent handlers update the UI.
1. Define Events
public record TaskCompletedEvent(int TaskId);2. Create Handlers
[SwapHandler]
public class TaskListHandler : ISwapEventHandler<TaskCompletedEvent>
{
public Task HandleAsync(TaskCompletedEvent evt, SwapResponseBuilder builder, ...)
{
builder.AlsoUpdate(...);
return Task.CompletedTask;
}
}
3. Clean Controllers
return SwapEvent(new TaskCompletedEvent(id)).Build();Benefits
| Without Events | With Events |
|---|---|
| Controllers coupled to UI | Controllers know business events only |
| Adding widget = editing controller | Adding widget = new handler |
| Hard to test | Unit test handlers independently |
Key Components
- [SwapHandler] attribute
- ISwapEventHandler<T>
- SwapEvent() method
Best For
- โ Complex dashboards
- โ Multi-widget pages
- โ Large teams