4

MVCプロジェクトでFluentValidation(http://fluentvalidation.codeplex.com)を使用して2つのルールを作成したいと思います。

CompanyとNameの両方が空の場合、何も起こりません。それらのいずれかが満たされている場合、何も起こらないはずです。会社または名前のいずれかが入力されていない場合は、両方にラベルを表示します。(エラーメッセージは同じである可能性があります)

私はこれまでこれを試しました:

RuleFor(x => x.Name)
.NotEmpty()
.WithMessage("Please fill in the company name or the customer name")
.Unless(x => !string.IsNullOrWhiteSpace(x.Company));

RuleFor(x => x.Company)
.NotEmpty()
.WithMessage("Please fill in the company name or the customer name")
.Unless(x => !string.IsNullOrWhiteSpace(x.Name));

When、Must、Unlessの組み合わせを試しましたが、どれも機能しません。何も入力しないと、これら2つのプロパティにエラーは表示されません。

誰かが私を助けることができますか?

4

2 に答える 2

2

コメントから、問題はクライアント側の検証を有効にしているようで、ルールは実際にはポストバックで機能します。FluentValidation wikiで指定されているように、サポートされているクライアント側のルールは次のとおりです。

  • NotNull/NotEmpty
  • 一致 (正規表現)
  • InclusiveBetween (範囲)
  • クレジットカード
  • Eメール
  • EqualTo (プロパティ間等価比較)
  • 長さ

したがって、基本的に、達成しようとしているものは、そのままではサポートされていません。

クライアント側のカスタム FluentValidation ルールの例をこちらでご覧ください

于 2012-11-09T18:58:30.463 に答える
0

when 条件を使用して 2 つのルールを追加できます。

RuleFor(x => x.Name)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.Company))
.WithMessage("Please fill in the company name or the customer name");

RuleFor(x => x.Company)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.Name))
.WithMessage("Please fill in the company name or the customer name");
于 2012-10-31T13:37:16.717 に答える