1


1

基本的な必須および最小の長さでクラスプロパティに注釈を付け、asp.netのmvcサーバー側とクライアント側の検証のすべての利点を得ることを理解しています。

ただし、この「基本」検証をより複雑なビジネスルールと組み合わせる方法を示すリンクは誰にでもあります。 たとえば、顧客が昨年(データベースのヒットが必要)に何かを注文しても、同じDataAnnotationおよびmvc検証配管を使用するなど、ビジネスルール機能を実行するにはどうすればよいですか。

目標:検証メソッドを生成して出力するための2つの方法が欲しくない。

4 Answer


4


カスタマイズされた検証チェックを作成するには、ValidationAttributeクラスから派生するクラスを作成するか、またはmemberValを適用するときにそのメソッドを参照するメソッドを参照します。 ValidationAttributeから派生するクラスを作成するときは、IsValidメソッドをオーバーライドして、カスタマイズした検証チェックのロジックを提供します。 _

そこにサンプルコードがあるようです。


3


データ注釈は、アクションが呼び出される前に実行されます。 その後、検証が成功したかどうかにかかわらず、アクションは呼び出されます。 DAが無効なデータを検出した場合、ModelStateは無効になります。

必要に応じて、データ注釈なしで通常行うのと同じように、ビジネスルールのために、ここにいったん入ってから、必要な検証を行うことができます。 アクションでは、データ注釈検証に合格した場合でもModelStateにエラーを追加できます。 この場合、ModelState.addErrorを使用してエラーを追加します。これらのエラーはDAが提供するエラーに追加されます。 だからあなたの見解では、エラーがどこから来るのかは問題ではない

あるいは、あなたのルールが一般的であれば、あなたはあなた自身のアノテーションタグを書くことができます。 Data Annotationのものはそのソースと一緒に配布されているので、あなたはそれを完全に管理することができます。


1


実際にはDataAnnotationsクラスに基づいたMicrosoftのEnterprise Library 5のVAB(Application Validation Block)を使用できますが、複雑なビジネスロジックは構成を通じて非常に簡単に実行できます。 チェックアウトすることをお勧めします。


1


同じフィールドでDataAnnotationsを複数回使用できる次の記事をご覧ください。N個のプロパティとN個の値を比較します。