2012-03-22 4 views
4

私はいくつかの条件付き検証で標準の 'RequiredIf'属性を持っています。
私のフォームとモデルはかなり大きく、モデルは63のプロパティを持ち、その大部分は検証されています。MVC3レイジーモデルバインド/ロード

とにかく、私のモデルがにロードされている間に問題が発生しますが、私の検証が実行中です。
'RequiredIf' 'IsValid'メソッド内のコードの最初の行にブレークポイントを置くと、モデルにヌル値が多いことがわかります。 F5キーを押すと(次のプロパティの検証を続行するために)、まだヌルがたくさんあります。私が約5回F5を押すと、モデルは魔法のように私が投稿したデータで満たされます。

私の最初の5-6のバリデーションは、このために台無しになってきています。モデルの読み込み方法については誰でも知っていますか?私はカスタムモデルバインディングを使用していません。

+0

あなたはエンティティリレーションシップのすべてをロードしたいですか?または、これらのプロパティはプリミティブ型ですか? –

+0

これらはすべてプリミティブ型です。読み込み中のほとんどは文字列です。 – Peanut

答えて

3

解決策は、標準モデルバインドを完全に「オーバーライド」することでした。独自のモデルバインダーを作成し、モデル全体を手動でロードし、その後、すべてのモデル検証を実行します。私はまだがあることを確信していますちょうどこの標準的なモデルのバインダーで "ちょっと、全体のモデルの負荷を検証する"と言う方法が、私は今自分のためにしなければならなかった。

1

私はあなたのページとモデルを再設計し、いくつかの小さなモデルでいくつかの部分的なビューを使用してデータモデルとビューを分割します。 この方法で、モデルをより良い方法で管理することができます。そのモデルのテストを書くことを想像してみてください。 63プロパティはあまりにも多く、多分あなたはそれに対処する必要があります。そうでなければ、後で問題に遭遇すると思います。

+0

私はこれに同意しませんが、プロジェクトの段階で誰かのコードを再設計することは選択肢ではありません。 :( – Peanut