2009-01-07 116 views
2

例如: 假設我想返回一個視圖,該視圖顯示汽車列表並顯示您所在區域的經銷商部分。這是兩個不相關的數據片斷。MVC視圖繼承

視圖繼承類似以下的汽車的列表:

public partial class CarLot : ViewPage<List<Cars>> 
{ 

} 

現在從控制器我可以返回視圖類似如下:

return View(Model.GetCars()); 

要渲染這個,我的標記看起來像下面這樣:

<% foreach (Car myCar in ViewData.Model) 
{some html here} 
%> 

這照顧的汽車列表,但我的問題是,我該如何處理經銷商名單? 查看支持多重繼承,或者我將不得不再次擊中模型形成標記?我知道可以這樣做,但我不確定這是否是最佳做法。

回答

18

創建一個數據傳輸對象

public class CarLotViewModel 
{ 
    public List<Car> Cars { get; set; } 
    public List<Dealer> NearbyDealers { get; set; } 
} 

設置你要使用的視圖模型視圖:在您的控制器

public partial class CarLot : ViewPage<CarLotViewModel> 
{  
} 

然後:

CarLotViewModel model = new CarLotViewModel(); 
model.Cars = GetCars(); 
model.NearbyDealers = GetDealers(); 
return View(model); 

然後枚舉每個集合在你的查看:

<% foreach (Car car in ViewData.Model.Cars) { %> 
.... 
<% foreach (Dealer dealer in ViewData.Model.NearbyDealers) { %> 
+0

是公共部分類CarLot:ViewPage {}相當於@model CarLotViewModel? – mishap 2012-04-11 19:19:52

0

設置視圖中使用視圖模型:

公共部分類卡洛特: 的ViewPage {}

沒有代碼隱藏在MVC 1.0。你如何設置視圖來使用視圖模型?

+0

這是一個ASPX。代碼隱藏是允許的,雖然不鼓勵,因爲它違反了分離控制器和視圖的理想。 – yfeldblum 2009-03-27 17:52:47