从多个模型传递多个列表以从控制器查看

Biv*_*aju 4 c# asp.net-mvc-4

我尝试找到一个类似的问题,但没有一个与我的情景相符.所以我发布这是一个新问题.我的模型和控制器如下所示:

模型:

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; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

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

var model = ?

return View(model);
Run Code Online (Sandbox Code Playgroud)

我只需要一种方法将输出列表传递给模型,这样我就可以将它传递给View.显然我在table1和table2中都有多个属性,而list1和list2是从LINQ生成的,所以它们有多个结果.

任何人都可以帮我看看我的模型应该是什么样的,以便我可以将两个列表传递给我的View?

我正在引用此链接,但它与我的场景完全不符:http://forums.asp.net/t/1998033.aspx ?Passing+multiple+Models+to+View+from+Controller

我还在stackoverflow中提到了其他类似的问题,但是我无法得到理想的结果.

Tom*_*ste 8

您应该创建一个ViewModel,其中包含视图中所需的所有信息.

public class MyViewModel {
   public List<table1> TheFirstTable {get;set;}
   public List<table2> TheSecondTable {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样填写它

MyViewModel viewModel = new MyViewModel();
viewModel.TheFirstTable = //first table content
viewModel.TheSecondTable = //second table content
return View(viewmodel);
Run Code Online (Sandbox Code Playgroud)

在视图上,您​​可以从模型中检索信息

Model.TheFirstTable
Run Code Online (Sandbox Code Playgroud)

或者在foreach循环中使用它

@foreach(var row in Model.TheFirstTable) {
    //do something with the row
}
Run Code Online (Sandbox Code Playgroud)