2011-02-23 11 views
2

私は1つのビューページ(MyView.aspx)とこのページにバインドする多くのデータソースを持っています。ASP.NET MVC2 - 1つのビューページに複数のデータソースをバインドするモデル - オプション?

それが私の見解でなどブックス、出版社、コメントなど

それらの一つ一つが、リストを提供を目的としている、リスト、

、multilpleのための私のoptiosnは何しているとしましょうモデルの寝台?

それぞれが空であるかどうかを確認し、それを列挙したいと思います。しかし、私はinherietにページを設定した場合、ModelingCount()をチェックすることはできません。

私のオプションは何ですか?コントロール/部分表示で各コンテンツ領域を読み込む必要がありますか?

または、各オブジェクトをViewDataにダンプし、ビューでキャストしてカウントを確認することはできますか?

私の問題をよく見ていただきありがとうございます。

答えて

6

すべての異なるデータフィールドのすべてのリストを含むViewModelを使用して、ビューを作成することを検討しましたか?

例:

のViewModel:

public class MyViewModel 
{ 
    List<Book> Books {get; set;} 
    List<Publisher> Publishers {get; set;} 
    List<Comment> Comments {get; set;} 
    //Other fields... 

    //Constructors... 
} 

特定のフィールドは、それを列挙するnullの前にした場合、あなたのビューであなたは、単にチェックすることができ:

ビュー:

if(Model.Books.Count() != 0) 
{ 
    //Enumerate through results here 
} 
+0

ねえ、それは素晴らしい考えです。私はViewModelsを忘れています。私のチームは、できるだけ具体的なオブジェクト(Publisherオブジェクトなど)を使用したいと考えています。これは、各モデルの部分的なビューを作成することに優先されますか? – nocarrier

+0

上記のように実装することができます。そして、すべてのオブジェクトを1つのビューに渡すだけです。ただし、ビュー内に単一のタイプのデータを表示するだけの場合は、アイテムのコレクションを渡すだけでベスト・ベットになる可能性があります。 –

+0

多くのappriciated。ご協力いただきありがとうございます! – nocarrier

0

Rionmonsterがおそらく最適な解決策であり、別の方法は強く型付けされた部分表示を使用することです。ビューデータにすべてをロードしてから、各セグメントをそれぞれの部分ビューに注入することができます。

+0

私は同意する、オブジェクトの各オブジェクトのリストを保持するモデルを作成するのが良い方法です。私は、具体的なオブジェクト(Publisherなど)に直接バインドできるように、強く型付けされたパリアルビューを検討しています。また、コンテンツ領域をAJAXを介して読み込むように変換したい場合、私はそうするために傍観像が必要です...正しいと思いますか? – nocarrier

+0

部分ビューに分割すると、Ajaxレスポンスとして部分を返すだけで、必要な部分だけをリロードできるので、Ajaxの生活が楽になります。 –