【问题标题】:Using FluentValidation to create validation rule for more than one property使用 FluentValidation 为多个属性创建验证规则
【发布时间】:2012-11-09 17:21:04
【问题描述】:

我正在尝试在 FluentValidation 中实现一个复杂的验证场景。

假设我有一个 Car 课程。它有四个属性:颜色、品牌、型号、年份。

我想构建一个涉及其中三个属性的验证规则。为了便于交流,假设我想要一个如下的验证规则:

if car.make = nissan and car.year = 2010 then
    if car.color <> green then
       throw a validation error since the system does not support 2010 nissans that are not green.
    end     
end 

我知道这是一个愚蠢的例子。但是,我的应用程序中的验证规则涉及对象的多个方面。这是我的问题的核心。

我已尝试按照 http://fluentvalidation.codeplex.com/wikipage?title=Custom 的指导使用 "Using AbstractValidator.Custom" 。

有没有其他的 AbstractValidator.Custom 工作示例?

提前感谢您的宝贵时间。

【问题讨论】:

    标签: fluentvalidation


    【解决方案1】:

    以下是实现涉及多个属性的验证的简单方法

    public class CarValidator : AbstractValidator<Car>
    {
        public CarValidator()
        {
            RuleFor(c => c.Color).NotEqual("Green").When(MakeIsNisssanAndYearIs2000))
        }
    
        private bool MakeIsNisssanAndYearIs2000(Car arg)
        {
            return arg.Make == "Nissan" && arg.Year == 2000;
        }
    }
    
    public class Car
    {
        public string Color { get; set; }
    
        public string Make { get; set; }
    
        public int Year { get; set; }
    }
    

    您可以参数化MakeIsNissanAndYearIs2000 方法,以便将品牌和型号作为参数传递给该方法。但这应该让您了解如何实现涉及多个属性的验证

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多