2009-04-14 47 views
1

我正在尋找一種在MVC中填充多個表格的方法,因爲該方法只允許我返回一個ModelView,或者我不知道如何返回更多。我是否必須在控制器中構建表並存儲到ViewData中並在頁面中顯示viewData?在ASP中填充2個或更多表格MVC

編輯:對不起,我想我沒有表達這個想法。重點是我想在頁面中填充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"] -= ... 

然後,您可以在視圖中獲得這些(另發)。另一種方法是聲明封裝這兩種屬性的類型,並將該類型的實例用作模型(以及類型化視圖)。就我個人而言,我更喜歡簡單的鍵/演員方法。

+0

對於簡單地將數據傳遞給視圖(列表/顯示),我同意。但是,從視圖獲取數據(新/更新)時,這種方法並不總是最簡單的。特別是,如果您已經有複合模型,請說明具有相關聯繫人的用戶。 – tvanfosson 2009-04-14 14:09:48