2012-03-23 88 views
0

我正在開發中,我想送2個對象通過控制器來查看我現在只發送一個對象可以查看通過控制器傳遞多個對象,以查看通過控制器

return View(repository.func(id)); 

一個asp.net MVC的Web應用程序並鑑於我得到

<% var data = Model.First %> 

但現在我很困惑如何發送2個對象,以及如何得到它。

+0

都是同一類型的對象? – Kiril 2012-03-23 14:30:48

+0

ViewBag/ViewData是一個選項還是需要通過模型完成? – 2012-03-23 14:31:49

回答

1

您可以使用ViewBag(我個人不喜歡這種方式),或創建類將舉行這兩個值,並用它爲模型視圖

+1

你能通過一些代碼解釋 – 2012-03-23 14:33:43

4

一個很好的機會(學會)使用視圖模型:

class MyViewModel { ... } 


// and in the Action: 
var view = new MyViewModel(); 
view.First = repository.func(id) ; 
view.Second = ....;  
return View(view); 
+0

class MyViewModel {...}在類中我需要定義什麼。請詳細解釋以及如何獲取視圖中的每個對象 – 2012-03-23 14:39:08

+0

是的,您必須編寫一個MyViewModel類。它將成爲視圖內的Model屬性。 – 2012-03-23 14:55:09

0

我假設你的觀點是強類型是相同類型的不管你是從返回:

repository.func(id) 

可以說對象'Foo

假設你使用的是強類型的視圖:

@model Foo 

您可以更改此爲:

@model IEnumerable<Foo> 

然後,你的觀點會被強類型的集合( IEnumerable的)富

,並在您的視圖,你可以這樣做:

foreach(var foo in Model) 
{ 
    //Do stuff 
} 

當然,你的資料庫法將不得不返回對象的集合(通過什麼實現IEnumerable - 列表<>爲例)

0

亨克的回答只是微微闡述

class MyViewModel { 
    TMyEntityType1 First { get; set; } 
    IQueryable<TMyEntityType2> Second { get; set; } 
} 

然後在你可能想將其更改爲你收集你的2套數據和房屋它的作用在您的視圖中MyViewModel

var viewModel = new MyViewModel(); 
viewModel.First = repository.func(id); 
viewModel.Second = repository.containing("?");  
return View(viewModel); 

一個實例:

<% var dataFirst = Model.First; 
    var dataSecond = Model.Second;%> 

其中型號爲現在的類型MyViewModel而不是repository.func(ID)的返回類型

相關問題