0

将来の会議に関するデータを収集するためのフィールドを持つフォームがあるとします (実際のドメインではありませんが、この質問の目的には十分です)。検証の一環として、新しいイベントはその年に 1 回しか発生しないため、たとえば 2012 年に発生する「stackoverflow getmessyandrunk カンファレンス」がある場合、ユーザーは同じ名前で新しいイベントに参加することを許可されるべきではありません。年...

今-私がこれまでに試したことは、各フィールドにリモートバリデーターを追加することです:

1 つは、AdditionalFields プロパティを使用して年フィールドを含めるイベント名フィールド用で、もう 1 つは、AdditionalFields を使用してイベント名フィールドを含める年フィールド用です。

機能しません - 同じ名前と年でイベントを追加しようとすると、年のフィールドだけにエラーが追加され、修正すると修正され、もう一度試行すると名前フィールドと年フィールドにエラーが追加され、修正されます組み合わせを一意にする名前フィールドは、名前フィールドからエラーを削除するだけです-それはこのように続きます...

他の人はこれをどのように行っていますか?

4

1 に答える 1

0

検証にデータ注釈を使用したい場合は、Codeplex で入手できる Foolproof 検証ライブラリを使用することをお勧めします: https://foolproof.codeplex.com/

特に、次の「requiredif」検証属性/装飾をサポートしています。

[RequiredIf]
[RequiredIfNot]
[RequiredIfTrue]
[RequiredIfFalse]
[RequiredIfEmpty]
[RequiredIfNotEmpty]
[RequiredIfRegExMatch]
[RequiredIfNotRegExMatch]

始めるのは簡単です:

  • 提供されたリンクからパッケージをダウンロードします
  • 含まれている .dll ファイルへの参照を追加します
  • 含まれている JavaScript ファイルをインポートする
  • 邪魔にならない JavaScript と jquery の検証のために、ビューがその HTML 内から含まれている JavaScript ファイルを参照していることを確認してください。

ドメイン クラスを検証属性で装飾して、ドメインと検証ロジックを混在させたくない場合は、いつでも強力な流暢な検証を選択できます。ここでライブラリを見つけることができます: https://fluentvalidation.codeplex.com/ 残念ながらサーバー側のみですが、関心の分離が重要である場合に適したオプションです...そしてコンテキストが原因で失われない特定のフィールドに関連付けられている検証。(ここを参照してください: http://www.codeproject.com/Articles/326647/FluentValidation-and-Unity )

于 2014-02-18T20:00:16.273 に答える