ryanelian / FluentValidation.Blazor

Fluent Validation-powered Blazor component for validating standard <EditForm> :milky_way: :white_check_mark:
https://www.nuget.org/packages/Accelist.FluentValidation.Blazor
MIT License
234 stars 27 forks source link

Upgraded to FluentValidation 10.x and .NET 6 Preview 3, getting the following error #71

Open zoinkydoink opened 3 years ago

zoinkydoink commented 3 years ago
Error: System.MissingMethodException: Method not found: 'System.Collections.Generic.IList`1<FluentValidation.Results.ValidationFailure> FluentValidation.Results.ValidationResult.get_Errors()'.
   at Microsoft.AspNetCore.Components.Forms.FluentValidator.ValidateModel(EditContext editContext, ValidationMessageStore messages)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.AspNetCore.Components.Forms.FluentValidator.ValidateModel(EditContext editContext, ValidationMessageStore messages)
   at Microsoft.AspNetCore.Components.Forms.FluentValidator.<>c__DisplayClass24_0.<AddValidation>b__0(Object sender, ValidationRequestedEventArgs eventArgs)
   at Microsoft.AspNetCore.Components.Forms.EditContext.Validate()
   at Microsoft.AspNetCore.Components.Forms.EditForm.HandleSubmitAsync()
   at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle)
sureshkumar1115 commented 3 years ago

we have also facing the same issue when upgrade the FluentValidation 9.0.0 preview 3 to 9.0.0 preview 4. and present in latet version 10 also

`@using FluentValidation

@code { FormModel Form = new FormModel(); FormModelValidator custVal = new FormModelValidator();

public class FormModel

{ public string Email { set; get; } }

public class FormModelValidator : AbstractValidator { public FormModelValidator() { RuleFor(Q => Q.Email).NotEmpty().EmailAddress().MaximumLength(255); } } } `

JeremySkinner commented 3 years ago

Hi @ryanelian, I just wanted to weigh in and provide some context on the above. This happens because FV's ValidationResult.Errors property was changed from an IList<ValidationFailure> to List<ValidationFailure> with the 10.0 release. The Accelist.FluentValidation.Blazor package doesn't currently contain an upper version limit for its FluentValidation dependency, so nuget will allow users to upgrade from FV 9 to 10 without warning them there's a compatibility issue.

The fix in this case is just to recompile against FV 10, but I'd also suggest patching the current release to add an upper version limit too.

I'd suggest the following:

Please feel free to ping me if you have questions about upgrading to 10.0

zoinkydoink commented 3 years ago

@JeremySkinner I want to thank you for helping here as well, your dedication is extremely appreciated

pablopioli commented 3 years ago

I made a fork to support FluentValidation 10.

I took the code from the version 5 branch and make the changes stated in this issue.

The idea is to make available an alternative (but compatible) nuget package until ryanelian can make an official release.

If you need FluentValidation 10 support check out https://github.com/pablopioli/FluentValidation.Blazor

carlblanchard commented 3 years ago

@pablopioli You are a legend!!!