3

DataSet複数のテーブルを表示するために、データベースからさまざまなテーブルを に読み込む Windows フォーム アプリケーションを作成していますDataGridViews。すべてのコードをコード ビハインド ファイルに入れるのではなく、さまざまなデザイン パターンの調査を開始し、MVP が最適なオプションであるというコンセンサスを持つ多くの記事/スレッドを見つけましたWinForms

いくつかのチュートリアルを行った後、MVP パターンを使用してコードを整理し始めました。モデルとなるものに DataSet を配置し、ほとんどのロジックをプレゼンターに配置し、その他すべてをビューに配置しました。

私の質問は、ユーザー入力の検証をどこに配置すればよいですか? ユーザーが s に無効な値を入力できるようにしたくありません。入力したDataGridView場合は、エラーのある行/セルを知らせたいと思います。以前は、RowValidating イベントを処理し、DataGridView の行とセルにエラーがないかチェックして、それに応じてメッセージを表示していましたが、これは MVP パターンに適合しないようです。

検証をビューに残すべきですか、それとも別の場所に移動する必要がありますか?

4

1 に答える 1

1

IMHO ビュー (フォーム) をできるだけシンプルに保つ必要があります。実際、RowValidating イベントをサブスクライブし、そこからプレゼンター (presenter.ValidateRow(...)) を呼び出して情報を渡し、検証を処理させることができます。プレゼンターは、検証ロジックがたまたま複雑で、(たとえば DB まで) ずっと下に行かなければならない場合、モデルに情報を求めることができます。エラーの処理方法は発表者の責任です。検証プロセスが完了したら、失敗または成功を表示するためにメソッドを呼び出すか、ビューにプロパティを設定するのはプレゼンターの仕事です。ビューは、ビジネス ロジック (オブジェクト) の状態への単なる "ウィンドウ" であることに注意してください。自問自答してください」MVP パターンの詳細については、http://msdn.microsoft.com/en-us/magazine/ee336019.aspxの記事を参照してください。

于 2012-10-30T17:33:40.540 に答える