0

クリーンなMVCでは、データベースからデータを収集し、それをビューに渡してレンダリングします。

ビューロジックが一部の要素をレンダリングしないことを選択した場合でも。これは次の質問を提起します:

すべてのデータベースクエリを含むコンテナを準備するのは問題ありませんが、ビューが「コントローラ内」でデータをフェッチするのではなく、このコンテナの反復を開始する場合(反復可能)、ビュー内からのみデータをフェッチしますか?

補遺

ビューに渡すコンテナは「一種の」モデルです。これをモデルと呼びましょうExpensiveObjectProvider。このコンテナがビューに渡されたとき、データはデータベースからまだフェッチされていません。

コンテナによってカプセル化されたオブジェクトは高価になる可能性があります。私がまだコントローラーでそれを行うのを見る唯一の理由は、エラー処理です(データベースクエリのエラー、接続の問題などの場合)。コントローラのデータベースから最初の1-2-3オブジェクトをプリフェッチしてから、コンテナをビューに渡して(例外が発生しない場合)、ビューにプリフェッチされたデータを消費させるのは、良いトレードオフだと思いますか?コンテナが繰り返されるときに新しいアイテムをフェッチしますか?

4

2 に答える 2

0

通常、データベース コードはビューに入らず、モデルまたはモデルが依存する DAO にあります。ビュー内のロジックはテストが難しく、データベースにアクセスするコードが含まれていると非常に面倒です。

于 2012-05-02T13:13:02.853 に答える
0

ビューはそのようなロジックを実行するべきではありません。コントローラーは、表示するデータをビューに伝えます。コントローラーはモデルからこのデータを取得します。

于 2012-05-02T13:13:19.257 に答える