2012-01-19 1 views
0

私はASP MVCを初めて使い、@モデルの一部ではない他のテーブルのデータにアクセスすることについて簡単に質問します。ASP MVC3モデル内で保持されていない複数のテーブルをループする

例:

今私は2つのテーブルを持って、私はTABLE1とtable2のそれらを呼ぶことにします。

コントローラからtable1をビューに渡してから、foreachループを実行して内容を出力します。

table1内にはtable2への参照があるので、table2のフィールドにアクセスできます。私が望むのはtable2もループすることですが、モデルに出力した唯一のデータはtable1の内容なので、私はそれを行うことができません。だから私はT2のデータにアクセスできますがアクセスできませんそれが持つ行数などの情報

答えて

1

(1)両方のテーブル(プロパティとして)を含む新しい「ビューモデル」を作成するか、(2)コントローラーで2番目のテーブルをViewData辞書に入れてあなたの意見

2番目のオプションは高速で簡単ですが、これはかなり一般的な問題であるため、ビューモデルの使用に慣れない方がよいでしょう。

public class MyViewModel { 
    public SomeDataTable table1 {get; set;} 
    public SomeDataTable table2 {get; set;} 
} 

(2)ここでViewData辞書を使用する方法は次のとおりです:、私は見

// Controller code (store the table in ViewData): 
SomeDataTable table2 = ...; 
ViewData["table2"] = table2; 

// View code (retrieve the table from ViewData): 
<% var table2 = (SomeDataTable)ViewData["table2"]; %> 
+0

ああを感謝

(1)ここでは例のビューモデルです! 私はViewDataの辞書に物を渡すことを見てきましたが、私はテーブルでそれをどうするのか本当にわかりません。私は文字列とリストを渡していますが、DbSetを渡そうとすると、その内容をどのように扱い、その内容をループするのかが本当にわかりません。任意のアドバイスをいただければ幸いです:) – user1157885

+0

私は 'ViewData'メソッドの例を追加しました。通常、コントローラは正しいモデルを作成する責任があり、モデルはデータベースから正しいデータを取得する責任があり、Viewで使用される単純なオブジェクト( 'List <>'など)にそのデータをロードしようとする必要があります。詳細については、[Fat Model、Skinny Controller](http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/)を参照してください。 )パターン、私は強くそれをお勧めします。 –

関連する問題