PageRenderTime 64ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/Changelog.txt

http://github.com/JeremySkinner/FluentValidation
Plain Text | 617 lines | 536 code | 81 blank | 0 comment | 0 complexity | bd8a760be2c4e6ed0ecb0c0f57523b05 MD5 | raw file
  1. 9.0 -
  2. Removed support for netstandard1.1, netstandard1.6 and net45 (net461 still supported)
  3. Removed support for unsupported .NET Core versions (2.2 and 3.0). LTS versions are supported (2.1 and 3.1)
  4. Default email validation mode now uses the same logic as ASP.NET Core. Previous regex behaviour is opt-in.
  5. TestHelper advanced mode now has more features (see https://docs.fluentvalidation.net/en/latest/testing.html#advanced-test-extensions)
  6. Equal/NotEqual now perform ordinal comparison when used with string properties
  7. Severity can now be set dynamically with a callback
  8. Removed WithLocalizedMessage (WithMessage that takes a callback is the replacement)
  9. Removed ResourceName from ValidationFailure
  10. Removed ResourceName and ResourceType from IStringSource.
  11. Removed SetCollectionValidator which was deprecated in 8.0
  12. Removed DelegatingValidator which was deprecated in 8.x.
  13. Additional overload of OnAnyFailure that can receive a collection of validation failures
  14. Remove DisplayAttribute integration and reference to DataAnnotations.
  15. ComparisonProperty placeholder is now formatted like PropertyName
  16. Translations of default error messages into other languages are now lazily-loaded
  17. PropertyValidator.ShouldValidateAsync reanamed to ShouldValidateAsynchronously to remove confusion where the naming suggested this was an async method
  18. PropertyValidatorContext.Instance renamed to InstanceToValidate for consistency with ValidationContext.
  19. Removed various methods from MessageFormatter that were deprecated in 8.x
  20. Added Slovenian translations of default error messages.
  21. Added Icelandic translations of default error messages.
  22. Added WithMessageArgument to the test helpers.
  23. Transform can now be used to transform property values to other types.
  24. FluentValidationModelValidatorProvider and FluentValidationModelValidator are now public.
  25. Add additional overload of SetValidator that takes a Func that receives the current property value.
  26. Work around a bug in ASP.NET Core's integration testing components that can cause ConfigureServices to run multiple times.
  27. SourceLink integration.
  28. {CollectionIndex} placeholder can now be accessed in child validators.
  29. Additional ValidationException constructor that allows using both the default message and a custom one together.
  30. ScalePrecisionValidator algorithm now matches SQL Server.
  31. Additional overload of the When methods that contain the validation context.
  32. 8.6.2 - 29 February 2020
  33. Fix CollectionIndex placeholder not working with async workflow.
  34. 8.6.1 - 28 December 2019
  35. Add explicit netcoreapp3.1 target to ASP.NET Core integration.
  36. 8.6.0 - 4 December 2019
  37. Add support for ASP.NET Core 3.1
  38. Fixed issue with property indexers being incorrectly stripped out when using test extensions.
  39. AddToModelState no longer includes a dot if PropertyName is null
  40. 8.5.1 - 2 November 2019
  41. 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).
  42. Fix issue where OnFailure didn't work properly when invoked on validators with conditions.
  43. 8.5.0 - 24 September 2019
  44. Add ASP.NET Core-compatible version of the email address validator.
  45. Simplify the advanced testhelper syntax.
  46. Add support for ASP.NET Core 3.
  47. Add support for defining child rules inline.
  48. ValidatorDescriptor now has consistent handling of model-level rules.
  49. RuleForEach can now access collection index in error message with {CollectionIndex} placeholder.
  50. Welsh language translations of default error messages.
  51. Hungrian language translations of default error messages.
  52. Indonesian language translations of default error messages.
  53. Using RuleForEach combined with When is now more intuitive.
  54. Fixed order of rule execution when using async validation.
  55. 8.4.0 - 10 May 2019
  56. Added simplified version of several messages across all translations to aid with ASP.NET Clientside validation.
  57. New enum validator for string properties.
  58. 8.3.0 - 24 April 2019
  59. Fix issue in ASP.NET Core integration with GetServiceProvider not working correctly when invoked against a CustomContext/MessageBuilderContext.
  60. Improved how LanguageStringSource works with error-code overrides.
  61. Fix thread-safety issue with use of PropertyValidatorOptions.Empty (now removed).
  62. Improved how calls to When/Unless are handled internally.
  63. DelegatingValidator is now marked as deprecated.
  64. Improvements to Croatian language translations.
  65. Improvements to Georgian language translations.
  66. Resolved subtle bug where top-level WhenAsync wouldn't work correctly when wrapping a top-level call to When.
  67. 8.2.3 - 12 April 2019
  68. Fix issue with WebApi integration where DataAnnotations validation could generate duplicate messages when used in the same
  69. project as FluentValidation.
  70. 8.2.2 - 5 April 2019
  71. Fix typo in FluentValidation.DependencyInjectionExtensions package name.
  72. 8.2.1 - 4 April 2019
  73. Resolved issue using InjectValidator with RuleForEach.
  74. Add support for a default IValidatorInterceptor to be registered with the ASP.NET Core Service Provider.
  75. Added "Without" test extensions for consistency with existing "With" text extensions.
  76. 8.2.0 - 26 March 2019
  77. Add extensions for injecting child validators using the ASP.NET Core Service Provider.
  78. WithLocalizedMessage is deprecated. Use the overload of WithMessage that takes a Func instead.
  79. Implement RuleFor(...).ForEach(...) as an alternative to RuleForEach
  80. 8.1.3 - 25 January 2019
  81. Resolved issue where clientside validation was incorrectly generating metadata for rules with shared conditions.
  82. ScalePrecisionValidator now has a public method in the fluent interface.
  83. Fix placeholder names in ScalePrecisionValidator for consistency.
  84. Updates to Portuguese (Brazil) translations.
  85. 8.1.2 - 18 December 2018
  86. Fix the same issue from 8.1.1 but for async conditions.
  87. Fix issue where shared When/Unless conditions didn't execute correctly when used with RuleForEach.
  88. 8.1.1 - 11 December 2018
  89. Added RuleSetsExecuted property to ValidationResult.
  90. Fix issue with shared condition cache incorrectly caching when used with RuleForEach.
  91. 8.1.0 - 6 December 2018
  92. Added format support for message placeholders.
  93. Added support for overriding indexers for collection rules.
  94. Allow ErrorCode to be used to override localization key in the Language Manager.
  95. Additional error details are now shown in the ShouldNotHaveValidationErrorFor test extension.
  96. Conditions defined with root-level When/WhenAsync/Unless/UnlessAsync are now only executed once (instead of once for each rule).
  97. Support Otherwise method chained from root-level When/WhenAsync/Unless/UnlessAsync.
  98. Minor wording changes to default English error messages.
  99. Added Skip property to MVC5's CustomizeValidatorAttribute to bring parity with AspNetCore and WebApi integration.
  100. Japanese translation of the default error messages.
  101. Remove type constraint on the OverridePropertyName overload that takes an expression.
  102. 8.0.101 - 24 November 2018
  103. Fix clientside property comparison validation adaptor in ASP.NET Core integration.
  104. 8.0.100 - 4 September 2018
  105. Added Greek language translation.
  106. Resolved an issue where Cascade and Transform couldn't be used with RuleForEach
  107. 8.0.0 - 16 Aug 2018
  108. Support validating only specific properties by path.
  109. Allow specifying a ruleset with SetValidator for complex properties.
  110. Introduce PropertyValidatorOptions in order to clean up the IPropretyValidator interface.
  111. Moved the AttributedValidatorFactory into a separate package.
  112. IStringSource.GetString now takes a context.
  113. Major cleanup of asynchronous validation workflow.
  114. Deprecate SetCollectionValidator in favour of RuleForEach().SetValidator
  115. Remove the pre-7 version of Custom/CustomAsync.
  116. Removed deprecated localization system.
  117. Remove deprecated RemoveRule/ReplaceRule/ClearRules methods.
  118. 7.6.105 - 11 August 2018
  119. Added Albanian language translations
  120. Added Chinese Traditional language translation
  121. Fix #858 ValidationTestExtension.When() incorrectly checks each failure instead of all failures
  122. 7.6.104 - 6 July 2018
  123. Added AbstractValidator.PreValidate to allow immediate cancellation of validation.
  124. 7.6.103 - 16 June 2018
  125. Using [BindProperty] in AspNetCore now works when implicit child validation is disabled.
  126. ShouldHaveChildValidator now works when the child validator is inside a DependentRules block.
  127. Test helpers are now compatible with custom property name resolvers set using ValidatorOptions.PropertyNameResolver.
  128. Switched to embedded debug symbols.
  129. 7.6.102 - 14 June 2018
  130. Fixed a regression where calling ValidateAsync with RuleForEach would no longer execute tasks sequentially (#799).
  131. 7.6.101 - 13 June 2018
  132. Added support for RuleForEach to the testing extensions (#238).
  133. Fixed a regression where calling ValidateAsync with RuleForEach could cause a deadlock (#799).
  134. Added ToString overrides on ValidationResult to generate a string representation of all errors (#778).
  135. Updated logos thanks to Dylan Beattie (#780).
  136. 7.6.100 - 7 June 2018
  137. Resolved an issue where ValidateAsync was called on child validators when the root validator was invoked synchronously.
  138. 7.6 - 1 June 2018
  139. Fix WhenAsync not working properly when calling Validate instead of ValidateAsync
  140. Upgrade ASP.NET Core integration to ASP.NET Core 2.1
  141. Include rules now work with explicitly-selected properties.
  142. Added caching when instantiating validators to obtain clientside metadata
  143. 7.5.2 - 16 March 2018
  144. Support multiple rulesets on a rule.
  145. Make setters on ValidationFailure's properties public to allow for easier deserialization.
  146. Additional overload for OverridePropertyName that takes an expression.
  147. Add overload of Include that lazily creates the inner validator.
  148. Allow replacing the default Error Code resolution process
  149. 7.5.1 - 11 March 2018
  150. Support CustomizeValidatorAttribute in WebApi integration
  151. Resolved issues with referencing FluentValidation from legacy PCLs.
  152. 7.5 - 26 February 2018
  153. Better handling of clientside messages when using custom overridden language resources
  154. Flag in the ValidationContext's RootDataContext when a validator is invoked by the automatic MVC/WebApi integration
  155. Improvements to some of the validation tester's messages
  156. Added Transform method to transform property values prior to validation
  157. Improve support for DisplayAttribute / DisplayNameAttribute when inferring property display name
  158. Added Slovak language support
  159. Added Hebrew language support
  160. Added Brazilian Portuguese language support
  161. Cache display names by default
  162. Ensure ShouldHaveChildValidator test method works with model-level rules
  163. Removed netstandard1.0 support. Supported platforms are now netstandard1.1, netstandard2.0 and net45.
  164. 7.4 - 27 January 2018
  165. Update DependentRules syntax and mark old syntax as obsolete
  166. Add workaround for inconsistent behaviour with HttpContext.Items with nonexistent keys in different version of AspNetCore
  167. Updated ValidationException serialization support
  168. Add ComparisonProperty to comparison validator message placeholders
  169. The Test Helper now correctly handles read-only properties
  170. Add CancellationToken support to ValidateAndThrowAsync and various ValidateAsync overloads
  171. Introduce MessageBuilderContext to make custom MessageBuilders more useful
  172. Update Microsoft.AspNetCore.Mvc dependency to 2.0.2
  173. Update MVC5/WebApi2 AddToModelState extension not to overwrite existing attempted values
  174. Add SetRulesetForClientsideMessages extension method for MVC5/AspNetCore
  175. 7.3.4 - 2 January 2018
  176. Resolved issue in AspNetCore integration where the change made in 7.3.3 meant that child collections were incorrectly skipped for DataAnnotations-based validation, as well as FV
  177. 7.3.3 - 22 December 2017
  178. Resolved issue in AspNetCore integration where child collections were incorrectly validated by the ModelValidatorProvider
  179. 7.3.2 - 21 December 2017
  180. Added CancellationToken support to child validators
  181. 7.3 - 13 December 2017
  182. Major improvements to the AspNetCore integration including better collection support and optional support for implicit validators
  183. Marked ValidationException as serializable when running on full framework
  184. Updated EnumValidator's Flags support to handle the ~0 value
  185. Fixed TestHelper checking for child validator would respond with the wrong type
  186. Updated translations for some validators and fixed some incorrect language codes
  187. Fixed overload of WithName that takes a lambda.
  188. Updated version of the Czech translations
  189. Added versions of WhenAsync and UnlessAsync that support CancellationTokens
  190. Simplify calls to DependentRules
  191. Add Skip property to CustomizeValidatorAttribute in the ASP.NET Core integration
  192. Updated language translations for various error messages.
  193. 7.2.1 - 24 October 2017
  194. Introduce MessageFormatterFactory
  195. Additional language translations
  196. Additional checks to ensure HttpContext is registered
  197. 7.2 - 5 October 2017
  198. Updated AspNetCore integration to support IValidatableObject
  199. Updated AspNetCore integration to allow mixing multiple validation strategies in the same model
  200. Updated AspNetCore integration to work with RulesetForClientsideMessagesAttribute, like MVC5
  201. Resolved issue with auto generating property names for nested types in the CustomValidator when using AddFailure
  202. Resolved issue where Custom sync/async invocation caused a NullReferenceException
  203. Resolved an issue with AspNetCore clientside integration being resolved from the root-level service provider
  204. Allow string.Empty in OverridePropertyName
  205. 7.1.1 - 25 July 2017
  206. Resolved issue where incorrect property name was generated when using RuleForEach combined with SetValidator
  207. Resolved an issue where nesting async validators inside DependentRules didn't wait for completion
  208. 7.1 - 28 June 2017
  209. Merged pull request - improved messages in ShouldHaveChildValidator test extension
  210. Merged pull request - test helper works with nested properties
  211. Added additional overload of WithState that accepts a property value
  212. Fixed StringLengthFluentValidationPropertyValidator generating the wrong comparison values when used in conjunction with the MaxLengthValidator and MinLengthValidator
  213. *Breaking change* Signature change of PropertyValidator.CustomStateProvider
  214. Add new RuleFor().Custom validator method as a replacement of the root-level Custom method
  215. AssemblyScanner now excludes abstract and generic types.
  216. Resolve issue with InvalidCastException when using lazy WithMessage with RuleForEach
  217. 7.0.3 - 7 June 2017
  218. Added missing overload for WithMessage
  219. Ensure LanguageManager.Culture takes precedence over the current thread's culture
  220. 7.0.2 - 26 May 2017
  221. Various fixes to clientside validation in asp.net core
  222. 7.0.1 - 23 May 2017
  223. Improve message for MinimumLength and MaximumLength validators in English (other translations would be welcome).
  224. Added FluentValidationModelValidatorProvider.DisableDiscoveryOfPropertyValidators for backwards compatibility
  225. 7.0 - 19 May 2017
  226. Switch to Netstandard based build process
  227. Deprecated IResourceAccessorBuilder and merged the functionality into LocalizedStringSource
  228. Deprecated all uses of expression-based localization. Use resourcename/resourcetype instead
  229. Resolved issue with possible NullReferenceException in the AspNetCore clientside integration for length validators
  230. Don't clear the ModelValidatorProviders collection by default in the AspNetCore integration (added new ClearValidatorProviders property to control this behaviour)
  231. Assemblies are now signed
  232. AssemblyVersion is no longer automatically incremented to avoid binding redirects
  233. Removed the old FluentValidation.snk and replaced with FluentValidation-dev.snk (nuget releases use a separate snk not stored in git)
  234. Ensure IValidatorFactory is resolved from request scope in asp.net core integration
  235. Rewrote the localization support not to require satellite assemblies
  236. Fix issue in WebApi integration where a property getter that throws an exception causes validation to fail
  237. Fix issue in AspNetCore integration where we tried to resolve a collection validator in some situations where a class validator should be used
  238. Improve SplitPascalCase method to support uppercase character sequences
  239. ValidationResult.ErrorCode property now always returns the type of the PropertyValidator that generated the message, unless it's been explicitly overridden
  240. Fix incorrect clientside validation attributes generated for email validator and credit card validator in the asp.net core integration
  241. Fix child model validation in webapi integration
  242. 6.4.1 - 15 Mar 2017
  243. Resolve issue where the accessor cache would incorrectly cache certain expressions on method calls that return members
  244. Added the ability to disable the accessor cache
  245. 6.4 - 3 Mar 2017
  246. AspNetCore support
  247. Performance improvements for validatior instantiation
  248. EnumValidator supports Flags
  249. Add ValidationSeverity
  250. Add support for collection validators on model-level rules
  251. Fixes/cleanup to RegexValidator and LengthValidator
  252. Async validators should run dependent rules
  253. Clearer exception message when passing a null instance into the root-level Validate method
  254. Additional overloads and clarity for WithMessage/WithLocalizedMessage overloads
  255. 6.2.1 - 26 Feb 2016
  256. Fix DependentRules not working inside a top-level call to When
  257. Fix enum validator to work correctly with nullable enums
  258. 6.2 - 22 Feb 2016
  259. Make ChildValidatorAdaptor.GetValidator public
  260. Make some of the private methods in FluentValidationModelValdiatorProvider protected instead of private
  261. ValidatorSelectors are now globally configurable through ValidatorOptions.ValidatorSelectors
  262. ValidatorSelectors can be overridden within the CustomizeValidatorAttribute
  263. Added "Include" statement
  264. Switched "dotnet" nuget library to uap10.0
  265. Add Enum validator
  266. 6.1 - 18 Jan 2016
  267. Overload of ValidateAndThrow supports rulesets.
  268. Separate PCL to support Universal Win10 apps
  269. 6.0.2 - 5 Jan 2016
  270. Fix issue with TestHelper not using correct overload.
  271. 6.0 - 22 Dec 2015
  272. Core - Fixed DelegateValidator causes a deadlock when running an async function synchronously.
  273. Core - Fixed Equal/NotEqual not working with structs
  274. Core - Additional overload of SetValidator that takes a validatorProvider
  275. Core - Additional overloads for Length and Matches that take a func for accessing comparison properties
  276. Core - ValidationContext.IsChildContext is now public
  277. Core - Add support for non-integer indexers in child collections
  278. Core - Added Empty and Null validators (opposite of NotEmpty and NotNull)
  279. Core - Add ErrorCode property
  280. Core - Add support for Dependent Rules
  281. Async - Added support for cancellation tokens
  282. Async - Add support for conditionals
  283. Async - Allow model-level rules with ValidateAsync
  284. Localization - added translations for Polish and simple Chinese
  285. Localization - Fixed name of Czech resource file
  286. MVC/WebApi - Allow ValidatorAttribute on method parameters
  287. WebApi - Add support for AddToModelState
  288. 5.6.2 - 29 May 2015
  289. RegExValidator can now use a special {RegularExpression} placeholder in its error message.
  290. Fix two crashes when using the PCL build
  291. Fix issue with GetAssembly
  292. 5.6 - 22 May 2015
  293. Patch - Added properties to Error that can be used to build customized message.
  294. Fixed issue where setting global resource provider isn't propogated to metadata, breaking client-side messages
  295. in some situations.
  296. Patch - allow spaces in credit card numbers
  297. Added Support model level-rules with RuleFor(x => x)
  298. Fixed issue with PropertyChain not handling nulls/empty strings properly
  299. Added support for rule dependencies
  300. Added ValidatorDescriptor.GetRulesByRuleset
  301. 5.5 - 30 Oct 2014
  302. Patch - Added optional RuleSet arguments to the validation test extensions.
  303. Patch - Support MVC4/5 client-side validation for GreaterThanOrEqualToValidator
  304. Patch - Support MVC4/5 client-side validation for LessThanOrEqualValidator
  305. Patch - Remove duplication in Min/MaxFluentValidationPropertyValidator
  306. Patch - Async validation for ChildCollectionValidatorAdaptor
  307. Update nuget package for wpa81
  308. 5.4 - 03 Jul 2014
  309. * Applied patch - Danish translation
  310. * Applied patch - Improve DisplayName resolution performance
  311. * Update WebApi/MVC dependencies
  312. 5.3 - 27 May 2014
  313. * Fix issue https://fluentvalidation.codeplex.com/workitem/7183 (email address validation)
  314. 5.2 - 21 May 2014
  315. * Added Czech and Finish translation of default error messages
  316. * Allow nullable target properties for greater/less validators
  317. * Apply pull request: RuleForEach doesn't respect When condition
  318. 5.1 - 11 Mar 2014
  319. * Applied pull request: Apply the same display name resolving to the target property as to the source property.
  320. * Applied pull request: Allow parent to be passed to child collection validator
  321. * Applied pull request: Implement Async validation
  322. * Applied pull request: Split WebApi into separate project
  323. * Drop support for MVC 3
  324. 5.0 - 24 Oct 2013
  325. * Display name is now lazily-loaded by default (as a result, localization via DisplayAttribute now works correctly)
  326. * Added WebApi integration (contributed by dmorganb)
  327. * Support for MVC 5 (package names are FluentValidation.Mvc5 and FluentValidation.Mvc5-signed)
  328. * Remove support for partial trust
  329. 4.0 - 29 Apr 2013
  330. * Add portable class library and deprecate the Silverlight-specific projects
  331. * Added scale precision validator (thanks to Matthew Leibowitz)
  332. * Added the ability to replace property rules (thanks to Matthew Leibowitz)
  333. * Added a slightly better value type comparer (thanks to Matthew Leibowitz)
  334. * Added RuleForEach
  335. * Additonal overloads of Matches
  336. * Added MemberAccessor (thanks to Mark Welsh)
  337. * Fix issue where OverridePropertyName didn't work with SetValidator/SetCollectionValidator
  338. * Add virtual CreateValidator method in to FluentValidationModelValidatorProvider
  339. * Add custom error message builder
  340. * *Breaking* LengthValidator no longer treats null inputs as length 0. This is now consistent with other validators.
  341. * *Breaking* Change default error messages for Equal/NotEqual validators to use {ComparisonValue} rather than {PropertyValue} for consistency.
  342. * All validators can now access the current property value inside the error message using {PropertyValue}
  343. 3.4 - 17 Aug 2012
  344. * Make ValidationResut.IsValid virtual
  345. * Add private no-arg ctor to ValidationFailure to help with serialization
  346. * Add Turkish error messages
  347. * Work-around for reflection bug in .NET 4.5
  348. * BREAKING CHANGE - Assemblies are now unsigned.
  349. 3.3 - 30 March 2012
  350. * Added additional overload for Must that accepts a PropertyValidatorContext.
  351. * Allow rules not in a RuleSet to be executed in addition to rules in a ruleset, eg: validator.Validate(instance, ruleSet: "default,MyRuleset");
  352. * Support Custom rules within top level When conditions.
  353. * Russian localization
  354. * MVC4 compatibility
  355. 3.2 - 14 November 2011
  356. * Fixed issue #7084 (NotEmptyValidator does not work with EntityCollection<T>)
  357. * Fixed issue #7087 (AbstractValidator.Custom ignores RuleSets and always runs)
  358. * Removed support for WP7 for now as it doesn't support co/contravariance without crashing.
  359. 3.1 - 29 July 2011
  360. * Support using nullables with cross-property comparisons (GreaterThan/GreaterThanOrEqual/LessThan/LessThanOrEqual)
  361. * Deprecate and exclude mvc metadata extensions. This is out of scope for FV, but the code for this functionality is still in the repo if anyone still depends on this.
  362. * Add support for shared conditions based on David Alpert's patch.
  363. 3.0.0.1 - 5 July 2011
  364. * Workaround issue caused by referencing DataAnnotations in windows client projects (eg WPF). Does not affect web projects/silverlight.
  365. 3.0 - 25 June 2011
  366. * Dropped compatibility for .NET 3.5 and MVC2.
  367. * Removed the SupportsStandaloneValidation property - this was never properly implemented.
  368. * Implemented Rule Sets
  369. * Add support for CustomizeValidatorAttribute when using MVC integration.
  370. * Remove generic PropertyRule<T> - use non-generic version instead.
  371. * Better support for custom client-side error messages for LengthValidator.
  372. * Add support for MVC3's IClientValidatable
  373. * Implement client-side support for InclusiveBetween validator.
  374. * Implement client-side support for Equal with cross-property validation.
  375. * Implement client-side support for email validator.
  376. * Added credit card validator (plus client side support)
  377. * Add IValidatorInterceptor interface. This can be used to add pre/post hooks to MVC validation integration. An interceptor can either be specified as part of the CustomizeValidatorAttribute or implemented in the validator.
  378. * Better handling of nullable value types.
  379. * Add static FluentValidationModelValidatorProvider.Configure for configuring MVC integration with default options.
  380. * Fixed edge case where custom property names didn't work for Required rules on non-nullable value types in MVC integration.
  381. * Patch - Polish localization.
  382. * Additional overloads of WithLocalizedMessage that support custom format args for consistency with WithMessage.
  383. * Bug fix - overload for NotEqual that takes an expression and an IEqualityComparer did not use the comparer.
  384. * Added the ability to specify which ruleset is used to generate client-side rules.
  385. * Introduced SetCollectionValidator for validating collections (replaces non-generic overload of SetValidator)
  386. * Better type safety using child collection validators.
  387. * Better control of which elements in a child collection are validated using the new Where method.
  388. * Support rules for nested properties at the top level (without needing to use a child validator)
  389. * Support DisplayAttribute/DisplayNameAttribute for inferring property names
  390. 2.0 - 13 January 2011
  391. * Fix typo in the name of FallbackAwareResourceAccessorBuilder
  392. * Fix issue #7062 - allow validator selectors to work against nullable properties with overridden names.
  393. * Fix error in German localization.
  394. * Better support for clientside validation messages.
  395. 2.0 RC1 - 10 December 2010
  396. * Allow custom MVC ModelValidators to be added to the FVModelValidatorProvider
  397. * Support resource provider for custom property validators through the new IResourceAccessorBuilder interface
  398. * Introduce WithLocalizedName
  399. * Deprecated WithPropertyName - you should either use WithName or OverridePropertyName.
  400. * *Breaking change* Rename IErrorMessageSource and its derivatives to IStringSource
  401. * Updated ASP.NET MVC integration to MVC3 RC2
  402. 2.0 beta 2 - 9 November 2010
  403. * Breaking change - Renamed the assembly names for SL/WP7 assemblies to FluentValidation.dll for consistency (formerly FluentValidation.Silverlight and FluentValidation.WP7)
  404. * Breaking change - Finally removed the FV 1.1 backwards compatibility layer.
  405. * Breaking chagne - Removed the deprecated Cascade() method - use Cascade(cascadeMode) instead (this was deprecated in 1.3)
  406. * Provide more useful information in ValidationException error message.
  407. * FluentValidatorModelMetadataProvider now converts NotNull/NotEmpty validators to IsRequired in metadata.
  408. * Patch - updated German localization
  409. * Using a child validator on a collection will now skip items in the collection that are null.
  410. * NotEmptyValidator can now work against empty collections (must implement ICollection)
  411. 2.0 beta 1 - October 7 2010
  412. * AttributedValidatorFactory is finally production worthy with the introduction of InstanceCache
  413. * Fixed an issue where CascadeMode values are ignored if they're changed after the rules have been defined.
  414. * Ported FluentValidation to WP7.
  415. * ShouldHaveChildValidator test helper now works with child collection validators
  416. * Simplified the implementation of SetValidator.
  417. * MVC3 integration
  418. 1.3 - July 26 2010
  419. * Added non-generic ValidationContext to allow for using Validator Selectors with non-generic IValidator instances
  420. * Simplified the internal model
  421. * Patch - Italian language resources
  422. * Introduced IErrorMessageSource to abstract different mechanisms for building error messages
  423. * Made ChildValidatorAdaptor public
  424. * Silverlight build is now signed
  425. * Allow cascade mode to be set at the validator level.
  426. * Deprecated Cascade().StopOnFirstFailure() / Cascade().Continue() in favour of Cascade(cascadeMode) for consistency
  427. * Deprecated PropertyRule.ReplaceCurrentValidator(newValidator) with PropertyRule.ReplaceValidator(originalValidator, newValidator)
  428. * *Breaking change* Changed default behaviour of When/Unless. They now apply to all previous validators in the chain, not only to the current one. Previous behaviour can be maintained by using the overload that takes an ApplyConditionTo.
  429. * NotEmpty now considers strings that contain whitespace as invalid.
  430. * Added ShouldHaveChildValidator(x => x.Property, typeof(SomeChildValidator)) test extension
  431. * xVal integration supports custom error messages
  432. * Made IAttributeMetadataValidator public
  433. 1.2 for SL4 - April 29 2010
  434. * Ported 1.2 codebase to Silverlight 4.
  435. 1.2 - March 11 2010
  436. * Re-enabled MVC1 integration.
  437. * Tweak ModelValidator behaviour so that all errors are run in one go (again)
  438. * Added AssemblyScanner.
  439. * Upgraded to MVC2 RTM.
  440. 1.2 beta 3 - Feb 14 2010
  441. * Fixed issue with MVC2 MetaData throwing exceptions.
  442. * Initial support additional options (such as When/Unless) on child validators. Needs refactoring for next version.
  443. * Child validators no longer bypass the Validate method on the child validator instance.
  444. * Tweak ModelValidator behaviour so that all errors are run in one go.
  445. 1.2 beta 2 - Feb 6 2010
  446. * Issue #4903 - Allow Name Resolution to be pluggable
  447. * Changed the .SetValidator method to require an IValidator<TProperty> rather than an IEnumerable<IValidationRule<TProperty>>
  448. * Removed unnecessary CreateDescriptor overload from AbstractValidator.
  449. * MVC2 Integration - FluentValidationModelValidatorProvider (serverside & clientside)
  450. * MVC2 Integration - FluentValidationModelMetadataProvider
  451. * Removed ComplexPropertyRule / NestedCollectionValidator. Replaced with IPropertyValidator implementations.
  452. 1.2 beta 1 - Jan 23 2010
  453. * Upgraded MVC integration to ASP.NET MVC 2
  454. * Model Binder now works with empty prefixes
  455. * Added Adam Schroder xVal integration in the new FluentValidation.xValIntegration project (experimental)
  456. * Allow the validator cascade mode to be set globally. The existing behaviour is the default (Continue). It can now also be set to StopOnFirstFailure:
  457. ValidationOptions.CascadeMode = ValidatorCascadeMode.StopOnFirstFailure
  458. * Allow the validator cascade mode to be set at the rule level (overrides the global option):
  459. RuleFor(x => x.Surname).Cascade().StopOnFirstFailure()
  460. * User state can be stored along side validation failures.
  461. * Updated Silverlight project for Silverlight 3.
  462. * Added the OnAnyFailure method. This delegate will be invoked if any rule attached to a particular RuleBuilder fails.
  463. * Added ExactLengthValidator (error message needs localising...)
  464. * Patch - Swedish language resources
  465. * Added WithPropertyName
  466. * Patch - InclusiveBetween/ExclusiveBetween validators contributed by Daniel Dyson
  467. * **Breaking Change** Removed generics from all the IPropertyValidator instances.
  468. * Introduced PropertyValidator base class
  469. * **Breaking Change** Removed the ValidationMessageAttribute
  470. * **Breaking Change** Removed the DefaultResourceManager
  471. * Simplified PropertyValidatorContext
  472. * Adding ValidatorFactoryBase to make creation of Validator Factories easier.
  473. * Additional overload of Custom that can access the current ValidationContext.
  474. * **Breaking Change** Deprecated and removed the CommonServiceLocator implementation.
  475. * Removed unnecessary IValidatorOptions interface.
  476. * Added InlineValidator.
  477. * Added ValidateAndThrow extension
  478. 1.1 - Jul 17 2009
  479. * Spanish resource translations.
  480. * French resource translations.
  481. * EmailValidator now uses regex from http://hexillion.com/samples/#Regex
  482. 1.1 beta 3 - Jun 15 2009
  483. * Patch - Dutch language resources
  484. * Deleting the deprecated 'And' operator
  485. * Major refactoring of the fluent interface.
  486. * Adding an additional overload of Validate to IValidator<T> that takes an IValidatorSelector.
  487. * Removing the IValidatorOfProperties interface
  488. * Moved the methods that were on IValidatorOfProperties to extension methods on IValidator
  489. * AbstractValidator now holds a collection of PropertyRules directly, rather than storing the intermediate RuleBuilders.
  490. * Introduced the PropertyModel
  491. * Marking AbstractValidator.CreateDescriptor as virtual.
  492. * Adding a protected Rules property to ValidatorDescriptor.
  493. * Allow a custom message to be definied in the ValidationMessageAttribute in addition to a resource key.
  494. 1.1 beta 2 - Jun 10 2009
  495. * Added support for validating nested collections
  496. * Implemented issue #4446: Additional property values can be accessed from within custom validation messages.
  497. * *Breaking Change* Validation messages now use custom placeholders such as {PropertyName} rather than {0}, {1} etc. This means that custom validation messages arguments now start at 0.
  498. * Added a ValidationMessage attribute which can be applied to property validator classes to specify the resource key to use when looking up the error message from the DefaultResourceManager.
  499. * Now using a more comprehensive regular expression in the EmailValidator.
  500. 1.1 beta 1 - May 26 2009
  501. * Validators can now be chained together: RuleFor(person => person.Address).SetValidator(new AddressValidator());
  502. * Marked the 'And' property as obsolete. It is now possible to chain validators without it. This will be removed in the next release.
  503. * Introduced ValidatorSelectors which allow certain validators to be excluded/excluded when validation occurs.
  504. * Initial work on the metadata API (added ValidatorDescriptor).
  505. * Added some additional marker interfaces to make obtaining metadata easier.
  506. * Added FluentValidation Model Binder for use with ASP.NET MVC.
  507. * Added ValidatorAttribute and AttributedValidatorFactory.
  508. * Added the ability to use a custom ResourceManager in place of the DefaultResourceManager.
  509. * Assemblies now marked as CLS Compliant.
  510. * Public fields can now be validated.
  511. * Made AbstractValidator.AddRuleBuilder public.
  512. * Added overload for AbstractValidator.Custom that can return multiple ValidationFailures.
  513. * Fixed issue #4236 - Error message for the 'Equals' validator showed the value entered not what the value should be.
  514. * Fixed issue with AddToModelState - empty string prefix should be treated the same as a null prefix.
  515. * Fixed issue with AddToModelState - SetModelValue should be called to ensure ASP.NET MVC's built-in HTML Helpers do not throw NullReferenceExceptions.
  516. * Fixed issue with email address regex - plus character should be allowed.
  517. * Fixed issue in Silverlight project - the Resource files were in the wrong namespace.
  518. 1.0 - Mar 27 2009
  519. * Support for multiple validators on a single property by using 'And' RuleFor(person => person.Surname).NotNull().And.NotEqual("Foo");
  520. * Added EqualValidator
  521. * Custom validation messages are now formatted in the same way as the default messages
  522. * Assemblies are now signed
  523. 0.3 - Jan 21 2009
  524. * Added ShouldNotHaveValidationErrorFor extension method for testing
  525. * Can now validate specified properties in addition to all properties (eg validator.Validate(person, x => x.Surname, x => x.Forename)
  526. * New validators (RegularExpressionValidator and EmailValidator) contributed by Liam McLennan
  527. * German localisation of validation messages contributed by Philipp Sumi
  528. * Additional overload to 'Must' that takes a Func<T, TProperty, bool>
  529. 0.2 - Dec 29 2008
  530. * Added Silverlight compatibility
  531. * Moved support for the CommonServiceLocator into a separate assembly (FluentValidation.CommonServiceLocator.dll)
  532. * Adding additional interfaces for some of the validators (ILengthValidator, INotNullValidator)
  533. * AbstractValidator now implements IEnumerable<IRuleBuilder<T>>
  534. * Added ShouldHaveValidationError extension method for testing validators
  535. 0.1 - Nov 1 2008
  536. * First public preview