Projemde Fluent Validation kullanıyorum.
ViewModel'imde type dizgisi olan bir özellik var, geçerli değerler yalnızca pozitif tamsayıları temsil eden dizedir.
Yani, bir IntegerValidator
basit bir dize, bir tamsayıya ayrıştırılabilir olup olmadığını denetler. Bu çalışıyor.
Sorun, kuralı nasıl pozitif tamsayı olacak şekilde eklemektir? Varolan Greater Than Validator kullanmak istiyorum, ancak string özniteliğimin kuralına zincirleme, string
ile karşılaştırıldı, ayrıştırılmış int
olarak değil. Bunu nasıl başarabilirim? ...Birbirine bağlı olan zincirleme kuralları
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
Bu gerçekten anlamlıdır! Ancak, ToInt'in rolünün ne olduğunu merak ediyorum. Gördüğüm gibi, RuleBuilder 'nu bir' RuleBuilder 'haline getirmeli ve doğrulanmış değerin doğrulama zamanında' int' olarak değiştirildiğinden emin olmalıdır. Ancak ... yöntem zinciri bir RuleBuilder 'döndürmelidir. Sağ? Yani, bir 'int' kuralları ('GreaterThan' gibi) 'int' doğrulama yapmak için bir 'dize 'rulebuilder döndürmek için bir yol olmalıdır. Bunun, FluentValidation'ın mevcut yeteneklerinin ötesine geçmesinden korkuyorum. –
@GertArnold: “ToInt” çok fazla mantıklı değil, bence. Aslında umrumda değil * nasıl * işe yarayacak *, * “GreaterThan” ı kullanabilirim ve bir int “GreaterThan” a geçebilir. –
Tamam, temel nokta şu ki, Akıcı Doğrulama'nın mevcut zihniyetinde kavramsal sorun olabilir. –