2009-03-25 6 views
5

MVCの主体にとって何かが欠けているのですか?1つのMVCビューに厳密に型指定された2つのモデルを使用する

私は書籍のリストと著者のリストを表示するビューを持っている場合、ブックのリストと著者のリストをプロパティとして持つクラスを作成する必要があります。右?

このクラスを使用するには、ビューを強く入力します。

今、私は同じリストで新しいページを作成したいと思いますが、それにはプロモーションのリストもあります。 Booksプロパティのリスト、著者プロパティのリスト、およびプロモーションプロパティのリストを持つ別のクラスを作成する必要がありますか?

私はすべてのビューのクラスを作成していますが、私はたくさんの余分な作業をしています。私はこれらのそれぞれのための強い型付けされた部分を作成するはずですか?レイアウトが毎回異なる場合はどうすればよいですか?

現在、共通のプロパティがいくつか含まれているため、すべてのビューで使用されるBaseViewDataクラスがあります。しかし、私は今、BaseViewDataクラスを完全に膨らませることなく他のアイテムを手に入れようとしています。

誰かが、すべての簡単な例がカバーしていないという理論を理解できるように助けてください。

答えて

3

を持っていない私は強く、複数のサポートを追加しMvcContribからViewData extension methodsを使用型付けされたモデル(異なる型である限り)。それらを引き出すためのビューで

User currentUser = GetCurrentUser(); 
List<Project> projectList = projectRepository.GetRecentProjects(currentUser); 
ViewData.Add(user); 
ViewData.Add(projectList); 

コードは次のようになります:ViewDataをにそれらを追加するコードはこのようになります

User user = ViewData.Get<User>(); 
List<Project> projectList = ViewData.Get<List<Project>>(); 

これは「魔法の文字列」と型キャストの両方を削除します。これは、ビューのModelプロパティでは何も行いません。

+0

ビューに変数を入力することになっていますか?私はビューがちょうど表示コードであると考えられていると思ったか、私はちょうどあまりにもペンパンジーですか? –

0

私は同じ問題に遭遇しました。私は、ほとんどの人のための一般的なソリューションは、本当に必要な本と著者のモデルを含むコンテナクラスを作成し、そのコンテナをビューに渡すことだと思います。

準最適ですが、機能します。うまくいけば、これはフレームワークの将来のバージョンで扱われることを望みます。

1

、これまでお使いのシステム内のオブジェクトのためのONEコンテナクラスを作成し、すべてのビューで使用 - ヌル値でシンプル

オブジェクトには、実際のオーバーヘッド

関連する問題