FluentValidation 9.0.0-preview3

A validation library for .NET that uses a fluent interface to construct strongly-typed validation rules.

Showing the top 20 packages that depend on FluentValidation.

Packages Downloads
FluentValidation.DependencyInjectionExtensions
Dependency injection extensions for FluentValidation
5
FluentValidation.DependencyInjectionExtensions
Dependenecy injection extensions for FluentValidation
3
FluentValidation.DependencyInjectionExtensions
AspNetCore integration for FluentValidation
3
FluentValidation.DependencyInjectionExtensions
Dependency injection extensions for FluentValidation
2
FluentValidation.AspNetCore
AspNetCore integration for FluentValidation
2

FluentValidation 9 is a major release. Please read the upgrade notes at https://docs.fluentvalidation.net/en/latest/upgrading-to-9.html Changes in 9.0.0: * Removed support for netstandard1.1 and netstandard1.6 * Default email validation mode now uses the same logic as ASP.NET Core. Previous regex behaviour is opt-in. * TestHelper advanced mode now has more features (see https://docs.fluentvalidation.net/en/latest/testing.html#advanced-test-extensions) * Equal/NotEqual now perform ordinal comparison when used with string properties * Severity can now be set dynamically with a callback * Removed WithLocalizedMessage (WithMessage that takes a callback is the replacement) * Removed ResourceName from ValidationFailure * Removed ResourceName and ResourceType from IStringSource. * Removed SetCollectionValidator which was deprecated in 8.0 * Additional overload of OnAnyFailure that can receive a collection of validation failures * Remove DisplayAttribute integration and reference to DataAnnotations. * ComparisonProperty placeholder is now formatted like PropertyName * Translations of default error messages into other languages are now lazily-loaded * Added Slovenian translations of default error messages. * Added WithMessageArgument to the test helpers. * Add additional overload of SetValidator that takes a Func that receives the current property value. * ASP.NET Core: FluentValidationModelValidatorProvider and FluentValidationModelValidator are now public. * Work around a bug in ASP.NET Core's integration testing components that can cause ConfigureServices to run multiple times. * SourceLink integration. * {CollectionIndex} placeholder can now be accessed in child validators. Full release notes can be found at https://github.com/FluentValidation/FluentValidation/blob/master/Changelog.txt FluentValidation 8 is a major release. Please read the upgrade notes at https://fluentvalidation.net/upgrading-to-8 Changes in 8.6.2: * Ensure CollectionIndex works in async workflow. Changes in 8.6.1: * Added explicit netcoreapp3.1 target to the ASP.NET Core integration. Changes in 8.6.0: * Add support for ASP.NET Core 3.1 * Fixed issue with property indexers being incorrectly stripped out when using test extensions. * AddToModelState no longer includes a dot if PropertyName is null Changes in 8.5.1: * Ensure lazily loaded calls to WithMessage can be used for client-side validation, provided they don't attempt to access model properties from inside the delegate (eg when using IStringLocalizer). * Fix issue where OnFailure didn't work properly when invoked on validators with conditions. Changes in 8.5.0: * Add additional overload of the EmailAddress validator for compatibility with ASP.NET Core's default email validation. * Simplify the advanced testhelper syntax. * Add support for ASP.NET Core 3. * Add support for defining child rules inline. * ValidatorDescriptor now has consistent handling of model-level rules. * RuleForEach can now access collection index in error message with {CollectionIndex} placeholder. * Welsh language translations of default error messages. * Hungrian language translations of default error messages. * Indonesian language translations of default error messages. * Using RuleForEach combined with When is now more intuitive. * Fixed order of rule execution when using async validation. Changes in 8.4.0: * Added simplified version of several messages across all translations to aid with ASP.NET Clientside validation. * New enum validator for string properties. Changes in 8.3.0: * Fix issue in ASP.NET Core integration with GetServiceProvider not working correctly when invoked against a CustomContext/MessageBuilderContext. * Improved how LanguageStringSource works with error-code overrides. * Fix thread-safety issue with use of PropertyValidatorOptions.Empty (now removed). * Improved how calls to When/Unless are handled internally. * DelegatingValidator is now marked as deprecated. * Improvements to Croatian language translations. * Improvements to Georgian language translations. * Resolved subtle bug where top-level WhenAsync wouldn't work correctly when wrapping a top-level call to When. Changes in 8.2.3: * Fix issue in WebApi integration where DataAnnotations validators could generate duplicate messages when in the same project as FluentValidation. Changes in 8.2.2: * Fix FluentValidation.DependencyInjection package name. Changes in 8.2.1: * Resolved issue using InjectValidator with RuleForEach. * Add support for a default IValidatorInterceptor to be registered with the ASP.NET Core Service Provider. Changes in 8.2.0: * Add extensions for injecting child validators using the ASP.NET Core Service Provider. * Implement RuleFor(...).ForEach(...) as an alternative to RuleForEach. * WithLocalizedMessage is deprecated. Use the overload of WithMessage that takes a Func instead. Changes in 8.1.3: * Resolved issue where clientside validation was incorrectly generating metadata for rules with shared conditions. * ScalePrecisionValidator now has a public method in the fluent interface. * Fix placeholder names in ScalePrecisionValidator for consistency. * Updates to Portuguese (Brazil) translations. Changes in 8.1.2: * Fix issue where shared When/Unless conditions didn't execute correctly when used with RuleForEach. Changes in 8.1.1: * Added RuleSetsExecuted property on ValidationResult. * Resolved issue introduced in 8.1 where the shared condition cache does not work correctly with RuleForEach (#970). Changes in 8.1: * Add format support in message placeholders. * Added support for overriding indexers for collection rules. * Allow error codes to be used to override localization key in the Language Manager. * Additional error details are now shown in the ShouldNotHaveValidationErrorFor test extension. * Conditions defined with root-level When/WhenAsync/Unless/UnlessAsync are now only executed once (instead of once for each rule). * Support Otherwise method chained from root-level When/WhenAsync/Unless/UnlessAsync. * Minor wording changes to default English error messages. * Japanese translation of the default error messages. * Added Skip property to MVC5's CustomizeValidatorAttribute for parity with AspNetCore and WebApi. * Remove type constraint on the OverridePropertyName overload that takes an expression. Added Skip property to MVC5's CustomizeValidatorAttribute to bring parity with AspNetCore and WebApi integration. Changes in 8.0: * Support validating only specific properties by path. * Added OnFailure method * Deprecated RuleFor(..).SetCollectionValidator in favour of RuleForEach(...).SetValidator * IStringSource.GetString now takes a validation context instead of a model instance. * Introduce PropertyValidatorOptions in order to clean up the IPropretyValidator interface. * Moved the legacy ValidatorAttribute and AttributedValidatorFactory into a separate FluentValidation.Attributes package. * Remove the pre-7.0 localization mechanism * Remove the pre-7.0 methods for custom validation * Removed many other deprecated methods Full release notes can be found at https://github.com/JeremySkinner/FluentValidation/blob/master/Changelog.txt

.NET Framework 4.6.1

  • No dependencies.

.NET Standard 2.0

  • No dependencies.

Version Downloads Last updated
12.1.1 2 2026/1/28
12.1.0 1 2026/3/27
12.0.0 2 2026/1/28
12.0.0-preview1 2 2026/1/28
11.12.0 1 2025/12/25
11.11.0 4 2026/1/22
11.10.0 2 2026/1/28
11.9.2 2 2026/1/28
11.9.1 2 2026/1/28
11.9.0 2 2026/1/28
11.8.1 2 2026/1/28
11.8.0 0 2023/10/19
11.7.1 2 2026/1/28
11.7.0 2 2026/1/28
11.6.0 2 2026/1/28
11.5.2 2 2026/1/28
11.5.1 2 2026/1/28
11.5.0 2 2026/1/28
11.4.0 2 2026/1/28
11.3.0 2 2026/1/28
11.2.2 2 2026/1/28
11.2.1 2 2026/1/28
11.2.0 2 2026/1/28
11.1.1 2 2026/1/28
11.1.0 2 2026/1/28
11.0.3 2 2026/1/28
11.0.2 2 2026/1/28
11.0.1 2 2026/1/28
11.0.0 2 2026/1/28
10.4.0 2 2026/1/28
10.3.6 2 2026/1/28
10.3.5 2 2026/1/28
10.3.4 2 2026/1/28
10.3.3 2 2026/1/28
10.3.1 2 2026/1/28
10.3.0 2 2026/1/28
10.2.3 2 2026/1/28
10.2.2 2 2026/1/28
10.2.1 2 2026/1/28
10.2.0 1 2026/3/27
10.1.0 2 2026/1/28
10.0.4 2 2026/1/28
9.5.4 2 2026/1/28
9.5.3 2 2026/1/28
9.5.2 2 2026/1/28
9.5.1 2 2026/1/28
9.5.0 0 2021/1/31
9.4.0 2 2026/1/28
9.3.0 2 2026/1/28
9.3.0-preview3 3 2026/1/26
9.3.0-preview2 2 2026/1/28
9.3.0-preview1 2 2026/1/28
9.2.2 2 2026/1/28
9.2.1 2 2026/1/28
9.2.0 2 2026/1/28
9.1.3 2 2026/1/28
9.1.2 2 2026/1/28
9.1.1 2 2026/1/28
9.1.0 2 2026/1/28
9.0.1 2 2026/1/28
9.0.0-preview5 3 2026/1/25
9.0.0-preview4 4 2026/1/25
9.0.0-preview3 1 2026/1/25
9.0.0-preview2 2 2026/1/28
9.0.0-preview1 2 2026/1/28
8.6.3 2 2026/1/28
8.6.2 2 2026/1/28
8.6.1 2 2026/1/28
8.6.0 2 2026/1/28
8.5.1 2 2026/1/28
8.5.0 2 2026/1/28
8.5.0-preview5 3 2026/1/25
8.5.0-preview4 2 2026/1/28
8.5.0-preview3 2 2026/1/28
8.5.0-preview2 3 2026/1/26
8.5.0-preview1 3 2026/1/25
8.4.0 2 2026/1/28
8.3.0 2 2026/1/28
8.2.3 2 2026/1/28
8.2.2 2 2026/1/28
8.2.1 0 2019/4/4
8.2.0 2 2026/1/28
8.1.3 2 2026/1/28
8.1.2 2 2026/1/28
8.1.1 2 2026/1/28
8.1.0 2 2026/1/28
8.1.0-preview2 3 2026/1/26
8.1.0-preview1 0 2018/10/14
8.0.101 2 2026/1/28
8.0.100 2 2026/1/28
8.0.0 2 2026/1/28
8.0.0-rc1 2 2026/1/28
8.0.0-preview4 2 2026/1/28
8.0.0-preview3 1 2026/1/25
8.0.0-preview2 2 2026/1/28
7.6.105 2 2026/1/28
7.6.104 2 2026/1/28
7.6.103 2 2026/1/28
7.6.102 1 2026/3/27
7.6.101 2 2026/1/28
7.6.100 2 2026/1/28
7.6.0 2 2026/1/28
7.6.0-preview1 3 2026/1/25
7.5.2 2 2026/1/28
7.5.1 2 2026/1/28
7.5.0 2 2026/1/28
7.4.0 2 2026/1/28
7.3.4 2 2026/1/28
7.3.3 2 2026/1/28
7.3.2 2 2026/1/28
7.3.1 2 2026/1/28
7.3.0 2 2026/1/28
7.3.0-beta3 2 2026/1/28
7.3.0-beta2 3 2026/1/26
7.3.0-beta1 3 2026/1/26
7.2.1 2 2026/1/28
7.2.0 2 2026/1/28
7.2.0-beta3 1 2026/1/26
7.2.0-beta2 3 2026/1/26
7.2.0-beta1 3 2026/1/26
7.1.1 2 2026/1/28
7.1.0 2 2026/1/28
7.1.0-beta1 2 2026/1/25
7.0.3 2 2026/1/28
7.0.2 2 2026/1/28
7.0.1 2 2026/1/28
7.0.0 2 2026/1/28
7.0.0-beta3 3 2026/1/26
7.0.0-beta2 3 2026/1/26
7.0.0-beta1 3 2026/1/26
6.4.1 2 2026/1/28
6.4.1-beta1 3 2026/1/25
6.4.0 2 2026/1/28
6.4.0-rc4 2 2026/1/28
6.4.0-rc3 1 2026/3/27
6.4.0-rc2 2 2026/1/28
6.4.0-rc1 0 2017/1/30
6.4.0-beta9 3 2026/1/26
6.4.0-beta8 1 2026/3/27
6.4.0-beta7 2 2026/1/28
6.4.0-beta6 1 2026/3/28
6.4.0-beta5 2 2026/1/28
6.4.0-beta4 2 2026/1/28
6.4.0-beta3 3 2026/1/26
6.4.0-beta2 3 2026/1/26
6.4.0-beta10 2 2026/1/28
6.4.0-beta1 3 2026/1/25
6.3.4-alpha 3 2026/1/26
6.3.3-alpha 2 2026/1/28
6.2.1 1 2026/1/28
6.2.1-beta1 3 2026/1/26
6.2.0 3 2026/1/26
6.2.0-beta1 2 2026/1/28
6.1.0 1 2026/1/28
6.0.2 2 2026/1/26
6.0.1 3 2026/1/26
6.0.0 3 2026/1/26
5.6.2 1 2026/1/28
5.6.1 3 2026/1/26
5.5.0 2 2026/1/28
5.4.0 3 2026/1/26
5.3.0 3 2026/1/26
5.2.0 1 2026/1/26
5.1.0 3 2026/1/26
5.0.0.1 2 2026/1/28
4.0.0.1 2 2026/1/28
4.0.0 1 2026/1/28
3.4.6 3 2026/1/26
3.4.0 1 2026/1/28
3.3.1 3 2026/1/26
3.2.0 3 2026/1/26
3.1.0 1 2026/1/28
3.0.0.1 2 2026/1/28
3.0.0 3 2026/1/26
2.0.0 2 2026/1/28
1.3.0 3 2026/1/26