私はEntity FrameworkとモデルクラスDonationFormをビューモデルクラス "CreateDonationForm"でラップしています。MVC3モデルクラスの条件付きバリデーション
DRYの原則に沿って、モデルクラス(ビューモデルだけではありません)に検証アノテーションを追加しました。これにより、再利用可能になります。ただし、クラスのすべてのプロパティが常に使用されるわけではありません(実際には互いに排他的です)。たとえば特定の電話番号プロパティが関連する場合、Regexアノテーションに準拠させて、必要なものにしたいと考えています。しかし、別の状況では、私はnull値をサブミットして(そしてデータベースにパースすることで)逃げたいと思っています。この記事に続き
:フィールドが与えられた関係ありませんでしたフィールドのグループの一部であったときHow do I use IValidatableObject?
私は(モデルクラスはIValidatableObjectを実装して作られたとselectiely ValidationResultオブジェクトから検証エラーを取り除くためにカスタム検証を実装フォーム上のユーザーの他の選択肢)。それは働いて、私はそれらのエラーが消去されていたValidationResultsのListを返すことができました。
しかし、私がSaveChanges()を呼び出すと、保存を妨げる検証エラーが発生します。検証はまだデータベース/モデルクラスレベルで行われています。 (データベースはEF 4.1コードファーストを使用してModelクラスから生成されました)
条件付き書式設定ルールを適用し、Modelクラスで注釈を使用する方法は可能ですか?これは本質的に言っています - これらの検証ルールを適用します。そうでなければこれらの検証ルールを適用しません。ここで私をコーチしてください。私はMVCの新しさです。私は、適切なやり方でやろうとしています。ビューモデルにバリデーションを入れて、基礎となるモデルクラスに値をマップするのがうまくいくようです。しかし、それは正しく感じません。 Modelクラス自体の検証属性を持つことに大きな価値があり、同じアノテーションを作成ビューモデルと更新ビューモデルの両方に配置する際の無駄な繰り返し作業がたくさんあります。私はここでMVC Fwと戦っているように感じます。あなたが提供できる洞察力があれば、大いに感謝します。