FluentValidation rule for multiple properties

前端 未结 4 1353
难免孤独
难免孤独 2021-01-01 08:26

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



        
4条回答
  •  悲&欢浪女
    2021-01-01 09:05

    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.

提交回复
热议问题