私のプロジェクトではFluent Validationを使用しています。
私のViewModelには文字列型のプロパティがあり、有効な値は正の整数を表す文字列だけです。
したがって、文字列を整数に解析できるかどうかを確認する単純なIntegerValidator
を作成しました。これは機能します。
問題は、正の整数でなければならないというルールを追加する方法ですか?既存のGreater Than Validatorを使用したいのですが、文字列プロパティのルールにチェーンすると、string
と解釈され、構文解析されたint
としては比較されません。これを達成する方法は?私は(ToInt()
に注意してください)したいと思っ何のお互いに依存する連鎖規則
サンプル:
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
これは本当に理にかなっています!しかし、私はToIntの役割がどんなものでなければならないのだろうか。私が見ているように、 'RuleBuilder'を 'RuleBuilder 'に変換し、検証時に検証された値が 'int'に変換されていることを確認する必要があります。しかし、メソッドチェーンは 'RuleBuilder 'を返すべきです。右?ですから、連続した 'int'ルール(' GreaterThan'のような)に 'int'バリデーションを行うよう指示し、' string'ルールビルダを返す方法がなければなりません。私はこれがFluentValidationの現在の能力を超えていることを恐れています。 –
@GertArnold:まあ、「ToInt」はあまり意味がないと思います。私は実際にはどうしたらうまくいくのですか?GreaterThanを使うことができ、intはGreaterThanに渡されます。 –
私の主なポイントは、Fluent Validationの現在の考え方では概念的な問題かもしれないということです。 –