2009-04-14 17 views
1

MVCで1つ以上のテーブルを作成する方法を探しています。これは、1つのModelViewを返すことしかできないか、もっと返す方法がわからないからです。コントローラにテーブルを作成してViewDataに格納し、そのページにviewDataを表示する必要がありますか?ASP MVCで2つ以上のテーブルに値を設定する

編集:申し訳ありませんが、私はその考えを表現していないと思います。要点は、ページ内に2つ以上のデータテーブルを作成したいということです。

たとえば、お客様が5つの連絡先と5つの住所を持っている場合、連絡先と住所付きの顧客情報と2つのテーブルを表示する必要があります。

for each p in modelview 
{ 
"<td>" + p.Name + "</td>" 
} 


for each p2 in modelview2 
{ 
"<td>" + p2.Product + "</td>" 
} 

答えて

0

複数のモデルを返すことはできますが、コントローラパラメータをバインドするときは、ビューの複合モデルと接頭辞の使用が必要になります。

は、あなたがあるビューモデルを持っていると言う:

public class VM 
{ 
    public FooClass Foo { get; set; } 
    public BarClass Bar { get; set; } 
} 

次に、あなたのコントローラでは、あなたが

public ActionResult MyAction([Bind(Prefix="Foo")]FooClass foo, 
          [Bind(Prefix="Bar")]BarClass bar) 
{ 
    ... 
} 

そして、あなたが使用するあなたのビューでを持っているでしょう:については

<%= Html.TextBox("Foo.Value") %> 
<%= Html.TextBox("Bar.Name") %> 
2

ViewDataは辞書です。

ViewData["foo"] -= ... 
ViewData["bar"] -= ... 

これで(複数の)アイテムをビューに表示することができます。もう1つの方法は、が両方のプロパティをでカプセル化し、そのタイプのインスタンスをモデル(および型付きビュー)として使用する型を宣言することです。個人的には、シンプルなキー/キャストアプローチが好きです。

+0

単にビュー(リスト/ショー)にデータを取得すると、私は同意します。ただし、ビューからデータを取得する場合(new/update)、このアプローチが常に最も簡単なわけではありません。特に、複合モデルをすでにお持ちの場合は、関連する連絡先を持つユーザーと言います。 – tvanfosson

+0

とbarの値は、バインドされたデータテーブルのhtmlコードになりますか? – jmpena

+0

いいえ。彼らはあなたがそれらの中に入れるどんなデータでもありません。 * view *はコントローラではなくhtmlを作成します –

関連する問題