2012-07-03 69 views

回答

2

讓我們假設你的兩個型號爲MyModel和MyOtherModel的實例。

我能想到的兩個選項:

  1. 通行證爲MyModel的模式,並把MyOtherModel在ViewBag。
  2. 使用包含MyModel的屬性和包含MyOtherModel的另一個屬性創建類MyBigModel,並將MyBigModel作爲模型傳遞。

選項1實際上不是您理想的解決方案。由於您的模型應該涉及到你的觀點(這就是爲什麼我喜歡的名字視圖模型),我真的去選擇2

選項2應該是這樣的:

public class MyBigModel 
{ 
    public MyModel { get; set; } 
    public MyOtherModel { get; set; } 
} 
+1

值得一提的是,選項1非常糟糕,不建議這樣做。 – archil

+0

你說得對,我會補充一點。 –

2

使用視圖模型 - 創建一個多個模型將同時包含模型,併發送,查看

public class MyCustomViewModel 
{ 
    public MyFirstModel First { get; set; } 
    public MySecondModel Second { get; set; } 
} 

並在控制器

public ActionResult Action() 
{ 
    MyFirstModel first = new MyFirstModel(); 
    MySecondModel second = new MySecondModel(); 

    MyCustomViewModel model = new MyCustomViewModel(); 
    model.First = first; 
    model.Second = second; 

    return View(model); 
} 

一般來說,顧名思義,您應該爲應用程序中的每個視圖使用自定義ViewModel,然後使用AutoMapper等工具將這些視圖模型來回映射到域模型。視圖模型爲您創作視圖提供了極大的靈活性,因爲您可以在不改變域的情況下爲其提供任何形狀和形式。

+0

+1爲Automapper提供了很大的靈活性:) – Yasser