Rask.Validation.DataAnnotations
0.20.0
dotnet add package Rask.Validation.DataAnnotations --version 0.20.0
NuGet\Install-Package Rask.Validation.DataAnnotations -Version 0.20.0
<PackageReference Include="Rask.Validation.DataAnnotations" Version="0.20.0" />
<PackageVersion Include="Rask.Validation.DataAnnotations" Version="0.20.0" />
<PackageReference Include="Rask.Validation.DataAnnotations" />
paket add Rask.Validation.DataAnnotations --version 0.20.0
#r "nuget: Rask.Validation.DataAnnotations, 0.20.0"
#:package Rask.Validation.DataAnnotations@0.20.0
#addin nuget:?package=Rask.Validation.DataAnnotations&version=0.20.0
#tool nuget:?package=Rask.Validation.DataAnnotations&version=0.20.0
<div align="center">
<img alt="Rask" src="https://raw.githubusercontent.com/pal-tamas/rask/main/assets/rask-logo.svg" width="280">
Live apps in C#. One codebase — server-rendered over WebSockets, client-side in the browser via WebAssembly, or a native iOS/Android app.
</div>
Write components as plain C# classes. Return a tree of HTML from Render(). No .razor, no JSX,
no JavaScript to write — and the same component code runs server-rendered with live WebSocket
updates or fully client-side on WebAssembly.
[Route("/counter")]
public sealed class Counter : Component
{
private int _count;
protected override Component? Render() =>
[
H1()["Counter"],
P()[$"Current count: {_count}"],
Button(OnClick: () => _count++)["Click me"]
];
}
Install
Prerequisites: the .NET 10 SDK (
dotnet --version≥10.0); thewasm-toolsworkload (dotnet workload install wasm-tools) for the WASM templates, orios android(dotnet workload install ios android) for the native template.
dotnet tool install -g Rask.Cli # the rask CLI (scaffolding)
rask new MyApp # or: --template wasm | wasm-hosted | native
Or add to an existing project:
dotnet add package Rask.Server # server-rendered over WebSockets
dotnet add package Rask.Wasm # client-side WebAssembly
dotnet add package Rask.Wasm.Hosting # host a published WASM bundle on ASP.NET
dotnet add package Rask.Native # native iOS/Android app head (WebView hybrid, preview)
dotnet add package Rask.Bootstrap # optional: typed Bootstrap 5.3 components
dotnet add package Rask.WebPush # send Web Push notifications from the backend
dotnet add package Rask.Cqrs # source-generated CQRS/mediator (queries, commands, notifications)
Why Rask
After 15+ years building full-stack .NET apps — WebForms, MVC, Angular and React over a C# API — I wanted the front end
back in C# without .razor mixing markup and code. So Rask makes a component a plain C# class that returns a tree, runs
the same code on Server or WASM, and treats the network as the bottleneck (a state change ships a minimal diff, not
the page). It's a craft project built in the open, deep on Roslyn source generators and tree diffing.
- One component model, three hosts — the same C# component runs Server (live diff over WS), WASM, or a native iOS/Android app (
Rask.Native, preview). - Compile-time factories — a Roslyn generator emits
Div(...),Counter(...), type-safe routes. - Scoped CSS & JS — sibling
Component.css/Component.js, content-addressed and cached. - Routing, lifecycle, forms, validation, auth — batteries included, no JavaScript required.
- Toast messages — inject
IToasterfor transient messages that survive a client-side navigation. - Tiny live updates — a minimal edit-op diff ships instead of the whole page.
- Slow-link aware — WASM boot shows download progress; a slow Server round-trip surfaces a pending bar.
- Optional typed Bootstrap —
Rask.Bootstrapadds typed Bootstrap 5.3 factories (BsButton/BsCard/BsModal/…), layout primitives (BsContainer, theBsRow/BsColresponsive grid, andBsStack),IFormControl<T>-bound inputs including the zero-JSBsSelect/BsMultiSelectcomboboxes (full keyboard/listbox a11y, opt-inFiltersearch,OptionGroupgrouping,OptionDisabledper-option disable, and a multiselectSelectAllheader), a typedBsIcon, typed utility classes, and aBsDataGrid<T>for list screens (typed columns, sorting, paging, footer totals, master-detail), with interactive components driven by the live runtime — no JavaScript. See docs/bootstrap.md.
Links
- 📖 Documentation · Getting started · Configuration · Observability · Accessibility
- 🚀 Live demo
- 💻 Source & README
- 🤖 AI assistant guide
Licensed under MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.20.0 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.75 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.74 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.73 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.69 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.68 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.67 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.66 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.64 | 0 | 8/6/2026 |
| 0.19.1-alpha.0.62 | 26 | 8/5/2026 |
| 0.19.1-alpha.0.57 | 22 | 8/5/2026 |
| 0.19.1-alpha.0.51 | 25 | 8/5/2026 |
| 0.19.1-alpha.0.43 | 21 | 8/5/2026 |
| 0.19.1-alpha.0.42 | 26 | 8/5/2026 |
| 0.19.1-alpha.0.40 | 23 | 8/5/2026 |
| 0.19.1-alpha.0.38 | 26 | 8/5/2026 |
| 0.19.1-alpha.0.32 | 30 | 8/5/2026 |
| 0.19.1-alpha.0.31 | 31 | 8/4/2026 |
| 0.19.1-alpha.0.30 | 32 | 8/4/2026 |
| 0.19.1-alpha.0.28 | 31 | 8/4/2026 |