I have a FluentValidator that has multiple properties like zip and county etc. I want to create a rule that takes two properties just like a RuleFor construct
Just came across this old question and I think I have a simpler answer. You can easily pass your whole object into your custom validation rule by simplifying the parameter to RuleFor
e.g.
RuleFor(m => m).Must(fooArgs =>
ValidZipCounty(fooArgs.Zip, fooArgs.countyId))
.WithMessage("wrong Zip County");
If the ValidZipCountry
method is local to your validator and you can change its signature to take a FooArgs
then the code simplifies down to
RuleFor(m => m).Must(ValidZipCounty).WithMessage("wrong Zip County");
The only downside is that the PropertyName
in the resultant validation error will be an empty string. This may cause a problem for you validation display code. However it is not really clear which property the error belongs too, ContryId
or Zip
, so this does make sense.