我已经使用最新版本的Fluent Validation 5.4.0.0;我需要达到的是:流畅验证的链接规则
考虑汽车VIN,这取决于品牌ID,型号ID和制造年份。在流利中我是否有能力在这些规则成功执行时根据更多规则执行规则?
如果所有三条规则(品牌,型号和年份)都通过,我必须验证车辆vin。
我也读过整个文档,找不到任何实施它的参考。
class VehicleValidator : AbstractValidator<Vehicle>
{
public VehicleValidator()
{
RuleFor(v => v.MakeId)
.NotEmpty()
.WithMessage("Make Id is required")
RuleFor(v => v.ModelId)
.NotEmpty()
.WithMessage("Model Id is required")
RuleFor(v => v.Year)
.NotEqual(default(ushort))
.WithMessage("Year is required")
RuleFor(v => v)
.MustBeAValidVehicle()
.WithName("Vehicle")
.Unless(v => v.IdMarca == null || v.IdModelo == null && v.Ano == default(short));
RuleFor(v => v.VehicleVin)
.NotEmpty()
.WithMessage("Vehicle Vin is required")
//Only run this validation if the validation of MakeId, ModelId, Year and MustBeAValidVechile don't fail
RuleFor(v => v.VehicleVin)
.MustBeAValidVehicleVin()
.Unless(v => v.Chassi == null || v.IdMarca == null || v.IdModelo == null || v.Ano == default(ushort));
}
}
你可以在你的类,如果你想定制它的验证规则实现AbstractValidator覆盖验证,但什么是你想达到什么目的?为什么你会希望验证是有条件的,由其他验证的结果决定,只是每次验证一切。 –
2014-10-16 12:55:07
@BenRobinson因为没有意义,我向用户显示一个消息,说“车辆无效”。当我需要提醒用户时,在验证它之前有一个无效的品牌,型号或年份。 – Gandarez 2014-10-16 12:58:53