Rask.Validation.FluentValidation
0.23.1-alpha.0.48
See the version list below for details.
dotnet add package Rask.Validation.FluentValidation --version 0.23.1-alpha.0.48
NuGet\Install-Package Rask.Validation.FluentValidation -Version 0.23.1-alpha.0.48
<PackageReference Include="Rask.Validation.FluentValidation" Version="0.23.1-alpha.0.48" />
<PackageVersion Include="Rask.Validation.FluentValidation" Version="0.23.1-alpha.0.48" />
<PackageReference Include="Rask.Validation.FluentValidation" />
paket add Rask.Validation.FluentValidation --version 0.23.1-alpha.0.48
#r "nuget: Rask.Validation.FluentValidation, 0.23.1-alpha.0.48"
#:package Rask.Validation.FluentValidation@0.23.1-alpha.0.48
#addin nuget:?package=Rask.Validation.FluentValidation&version=0.23.1-alpha.0.48&prerelease
#tool nuget:?package=Rask.Validation.FluentValidation&version=0.23.1-alpha.0.48&prerelease
Rask.Validation.FluentValidation
FluentValidation for Rask forms and requests, in Rask, a full-stack .NET web
framework for teams of any size. The Rask package references it for you on both the server and the
browser.
- Writing the validator is the registration. A generator finds every
AbstractValidator<T>in the app at compile time, and a form asks for the one that validates its model — nothing to declare in the form, nothing to wire inProgram.cs. - No assembly scan. Registration is emitted as a
[ModuleInitializer], so a WebAssembly app uses FluentValidation and still publishes trimmed. - Async rules work like sync ones. Each validator is wrapped as an
IAsyncFieldValidator, so aMustAsyncuniqueness check runs per field; a validator with constructor dependencies is resolved from the scope. - Per-keystroke validation of a root-model field runs only that property's rules; submit runs every rule.
- A validator in a referenced class library is registered explicitly:
RaskValidators.Register(typeof(Order), _ => new OrderValidator());
Install
dotnet add package Rask.Validation.FluentValidation
Use
public sealed class OrderValidator : AbstractValidator<OrderModel>
{
public OrderValidator()
{
RuleFor(x => x.Product).NotEmpty();
RuleFor(x => x.Quantity).GreaterThanOrEqualTo(1).WithMessage("Quantity must be at least 1.");
}
}
Form.Model(_model).OnValidSubmit(m => _submission = "Ordered")[
Input.Bind(() => _model.Product),
Validation.Message.Template(errors => Span.Class("error")[errors[0]]).For(() => _model.Product),
Input.Bind(() => _model.Quantity),
Validation.Message.Template(errors => Span.Class("error")[errors[0]]).For(() => _model.Quantity),
Button.Type("submit")["Order"]
]
Depends on FluentValidation 12.x.
Guides: Validation · Forms — validation
| 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. net11.0 is compatible. |
-
net10.0
- FluentValidation (>= 12.1.1)
-
net11.0
- FluentValidation (>= 12.1.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Rask.Validation.FluentValidation:
| Package | Downloads |
|---|---|
|
Rask
The one reference a Rask application needs, server or browser. On a server target (net10.0 or net11.0) it brings the ASP.NET host plus every battery — database (SQLite, PostgreSQL or SQL Server, picked by Rask:Database:Provider), mediator, background jobs, transactional email, cache, file storage, outbox, operator dashboard, durable logs, Web Push, and SQLite snapshots and continuous backup — with RaskApp.Create(args) as the entry point. On a browser target it brings the WebAssembly host, the source-generated mediator, the query cache and remote dispatch. Everything referenced is wired and on; app.Configure(c => c.Jobs.Off()) is how an app does without one. Reference Rask.Server for a lean host with no database. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.23.1-alpha.0.66 | 0 | 9/24/2026 |
| 0.23.1-alpha.0.65 | 0 | 9/24/2026 |
| 0.23.1-alpha.0.64 | 20 | 9/24/2026 |
| 0.23.1-alpha.0.62 | 21 | 9/24/2026 |
| 0.23.1-alpha.0.61 | 25 | 9/24/2026 |
| 0.23.1-alpha.0.50 | 25 | 9/24/2026 |
| 0.23.1-alpha.0.49 | 23 | 9/24/2026 |
| 0.23.1-alpha.0.48 | 21 | 9/24/2026 |
| 0.23.1-alpha.0.47 | 25 | 9/24/2026 |
| 0.23.1-alpha.0.46 | 41 | 9/23/2026 |
| 0.23.1-alpha.0.45 | 35 | 9/23/2026 |
| 0.23.1-alpha.0.43 | 38 | 9/23/2026 |
| 0.23.1-alpha.0.38 | 39 | 9/23/2026 |
| 0.23.1-alpha.0.36 | 40 | 9/23/2026 |
| 0.23.1-alpha.0.35 | 36 | 9/23/2026 |
| 0.23.1-alpha.0.34 | 38 | 9/23/2026 |
| 0.23.1-alpha.0.33 | 50 | 9/21/2026 |
| 0.23.1-alpha.0.30 | 44 | 9/21/2026 |
| 0.23.1-alpha.0.29 | 43 | 9/21/2026 |
| 0.23.0 | 91 | 9/18/2026 |