2016-04-27 66 views
3

我試圖找到一個類似的問題查看,但他們都不符合我的情況。所以我發佈這個作爲一個新問題。我的模型和控制器如下所示:通多個模型的多個列表,從控制器

型號:

public class table1 
{ 
    public string name1 { get; set; } 
} 

public class table2 
{ 
    public string name2 { get; set; } 
} 

public class bothTable 
{ 
    public table1 table1 { get; set; } 
    public table2 table2 { get; set; } 
} 

控制器:

List<table1> list1 = //generate list from table1 
List<table2> list2 = //generate list from table2 

var model = ? 

return View(model); 

我只是需要一種方法來同時輸出列表傳遞給模型,以便我可以通過它在視圖上。很明顯,我在table1和table2中有超過1個屬性,而list1和list2是由LINQ生成的,因此它們有多個結果。

任何人都可以請幫我在我的模型應該是什麼樣子,這樣我既可以列出傳遞給我的視圖?

我指的這個環節,但它並不完全符合我的情景: http://forums.asp.net/t/1998033.aspx?Passing+multiple+Models+to+View+from+Controller

我還吹罰在其它計算器類似的問題,但我無法得到期望的結果。

+0

創建第三個模型相結合的結果Y OU想和模型綁定到你的觀點 – techspider

回答

8

你應該創建一個包含您可以在視圖所需要的所有信息的視圖模型。

public class MyViewModel { 
    public List<table1> TheFirstTable {get;set;} 
    public List<table2> TheSecondTable {get;set;} 
} 

您可以填寫像這樣

MyViewModel viewModel = new MyViewModel(); 
viewModel.TheFirstTable = //first table content 
viewModel.TheSecondTable = //second table content 
return View(viewmodel); 

在視圖,那麼你可以retreive從模型的信息,如

Model.TheFirstTable 

或在foreach循環使用它

@foreach(var row in Model.TheFirstTable) { 
    //do something with the row 
} 
+0

Model.TheFirstTable是給我一個錯誤的視圖說MyViewModel不包含TheFirstTable的定義。在頁面的頂部,我有'@model名單' –

+0

你並不需要把MyViewModel在列表中。這些列表在視圖模型中。所以它應該是@model MyProject.Models.MyViewModel –

+0

真棒!謝謝 :) –

2

更改模型bothTableList<table1> List<table2>。例如:

public class table1 
{ 
    public string name1 { get; set; } 
} 

public class table2 
{ 
    public string name2 { get; set; } 
} 

public class bothTable 
{ 
    public List<table1> table1 { get; set; } 
    public List<table2> table2 { get; set; } 
} 

然後,生成模型:

List<table1> list1 = //generate list from table1 
List<table2> list2 = //generate list from table2 

var model = new bothTable { table1 = list1, table2 = list2 }; 

return View(model);