もともと文字列の検証ロジックを作成するとき、必要な文字列にはNotEmptyを使用することにしました。 .NotEmpty()。Length(min、max)を使用すると、空の文字列が渡されたときに1つだけではなく2つのエラーが返されます。
冗長なエラーを防ぐにはどうすればよいですか?
.Length(min、max)は、文字列がnullの場合はエラーを返しませんが、文字列が空でminが0より大きい場合はエラーを返します。 0。
最初のエラーで停止する一般的な方法は、カスケードメソッドを使用することです。
_ RuleFor(o => o.PropertyName)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty() // Will return an error if null or empty
.Length(2, 10) // Will only return an error if length == 1 or > than 10
_
ただし、文字列の場合、以下を読む方が簡単です。
_ RuleFor(o => o.PropertyName)
.NotNull()
.Length(2, 10) // Will not return an error on null
_
NotNull、NotEmpty、Lengthを使用した文字列検証シナリオ:
最大長のオプション:
RuleFor(o => o.PropertyName).Length(0, max);
最小長と最大長のオプション:
RuleFor(o => o.PropertyName).Length(min, max);
必須ですが、長さをゼロにすることができます:
RuleFor(o => o.PropertyName).NotNull()
必須であり、長さはゼロ以外でなければなりません:
RuleFor(o => o.PropertyName).NotEmpty();
必須、最大長:
RuleFor(o => o.PropertyName).NotNull().Length(0, max);
必須で、最小長と最大長があります:
RuleFor(o => o.PropertyName).NotNull().Length(min, max);
追加のエラーの発生を防ぐ別の方法は、 カスケードモードを設定する にすることです。
RuleFor(x => x.PropName) .Cascade(CascadeMode.StopOnFirstFailure) .NotEmpty() .Length(min, max);