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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rask.Validation.DataAnnotations" Version="0.20.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rask.Validation.DataAnnotations" Version="0.20.0" />
                    
Directory.Packages.props
<PackageReference Include="Rask.Validation.DataAnnotations" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rask.Validation.DataAnnotations --version 0.20.0
                    
#r "nuget: Rask.Validation.DataAnnotations, 0.20.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rask.Validation.DataAnnotations@0.20.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rask.Validation.DataAnnotations&version=0.20.0
                    
Install as a Cake Addin
#tool nuget:?package=Rask.Validation.DataAnnotations&version=0.20.0
                    
Install as a Cake Tool

<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.

License: MIT .NET

</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 --version10.0); the wasm-tools workload (dotnet workload install wasm-tools) for the WASM templates, or ios 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 IToaster for 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 BootstrapRask.Bootstrap adds typed Bootstrap 5.3 factories (BsButton/BsCard/BsModal/…), layout primitives (BsContainer, the BsRow/BsCol responsive grid, and BsStack), IFormControl<T>-bound inputs including the zero-JS BsSelect/BsMultiSelect comboboxes (full keyboard/listbox a11y, opt-in Filter search, OptionGroup grouping, OptionDisabled per-option disable, and a multiselect SelectAll header), a typed BsIcon, typed utility classes, and a BsDataGrid<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.

Licensed under MIT.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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
Loading failed