2011-11-06 12 views
5

私はMVCを習得しているだけで、以下のシナリオをどのように処理するのか分からないようです。配送先住所と請求先住所のフォームがあります。全て必須項目です。 「請求先住所は配​​送先住所と同じです。」のチェックボックスもあります。私の問題は、両方のアドレスが完了しない限り、モデルの状態は決して有効ではないということです。私はこれをかなり簡単に扱うことができました。ちょうど出荷アドレスから課金アドレスフィールドに値を追加したJavaScriptでしたが、これを処理するためのよりよい方法があれば知りたいと思います。これが一般的にどのように扱われるかについてのガイドラインは素晴らしいでしょう。ありがとう!MVC3で条件付き検証を処理するにはどうすればよいですか?

+0

請求先住所と配送先住所は別々のモデルですか?または1つのモデルが一緒に詰め込まれている? – chemicalNova

+0

同じモデルです。どちらも同じタイプのプロパティです。 – Mike

答えて

4

これを処理する方法はたくさんあります。クライアント側の検証を使用していない場合は、モデルにIValidatableObjectを実装し、IsValid()メソッドをオーバーライドしてモデルの正当性をチェックするコードを実行します。

クライアント側の検証を使用している場合は、カスタム属性が必要です。またはfluent validationなどを使用してください。

4

カスタム検証属性を作成することによって、これを達成することができます

http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx

その要旨は、新しいクラスbased off ValidationAttribute、およびIClientValidatableを作成し、必要に応じてをオーバーライドして実装し、あなたのクライアント - を追加することですサイド・バリデーション(何とか必要なもの)を作成し、オプションのフィールドに属性を適用します。

また、検証は必要なだけ複雑になる可能性があるため、部分的にオプションで部分的に必須の共有フィールドに適用します。

その男には、MVCの検証をより柔軟にするために書いているライブラリのアルファがあります。自分で使ったことはありませんが、you could give it a try

関連する問題