2011-11-03 111 views
0

我在將多個模型傳遞給單個視圖時遇到問題,在閱讀了其他文章之後,我需要創建一個單獨的類並實例化該類並將該實例化的類返回給風景。但是,我將如何做到這一點?將多個模型傳遞給視圖

我想用Entity Framework和Linq做查詢。如果你能提供給我學習的示例代碼...

+1

[推薦本] [1] [1]:http://stackoverflow.com/questions/4764011/multiple-models-in-a-view –

回答

4

你既可以做到快速,骯髒的方式,使用動態:

dynamic viewdata = new ExpandoObject(); 
viewdata.object1 = Model1; 
viewdata.object2 = Model2; 

return View(viewdata); 

或者你可以做到這一點,並創建一個viewmodel。

class ViewModel1 { 
    public MyModel Model1 { get; set; } 
    public MyOtherModel Model2 { get; set; } 
} 

ViewModel1 viewdata = new ViewModel1(); 
viewdata.Model1 = Model1; 
viewdata.Model2 = Model2; 

return View(viewdata); 
+0

用於偏好viewModel的+1 –

0

使用

public ActionResult Index() 
{ 
    SomeClass1 object1 = new SomeClass1(); 
    SomeClass2 object2 = new SomeClass2(); 
    ViewData["someName1"]=object1; 
    ViewData["someName2"]=object2; 
    return View(ViewData); 
} 

在View頁面,您可以訪問它們爲:

<% SomeClass1 object1 = ViewData["someName1"] as SomeClass1; %> 
<% SomeClass1 object2 = ViewData["someName2"] as SomeClass2; %> 
+0

我會去其他的答案,使用一個子ViewModel。所有這些魔術字符串和投射都可能會成爲調試的痛苦,並且只會產生運行時錯誤。 – Syska

+0

@Syska「dynamic」關鍵字在c#4.0中引入! 那麼之前的框架呢? – 1Mayur

+0

然後,我仍然會選擇包含2個其他視圖模型的ViewModel。除非你只是在一些本地項目中嘗試一些東西,否則我並不真正看到這種收益。我也開始這樣做,但最終......真正的夜晚。如果可以完成,我會避免使用動態的,除非我們可以像R#這樣的一些intellisence試圖提供,所以我們可以在構建過程中捕獲錯誤。 – Syska

0

創建一個視圖模型。視圖模型是一種通常由其他模型組成的模型,並且不綁定到您的數據模型。 MvcMusic演示有一個使用視圖模型的好例子。

雖然ViewData將工作其不是類型安全,基本上取決於魔術弦,所以我會避免它。