[英]Pass multiple list from multiple models to view from controller
我尝试找到一个类似的问题,但没有一个与我的情景相符。 所以我发布这是一个新问题。 我的模型和控制器如下所示:
模型:
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);
我只需要一种方法将输出列表传递给模型,这样我就可以将它传递给View。 显然我在table1和table2中都有多个属性,而list1和list2是从LINQ生成的,所以它们有多个结果。
任何人都可以帮我看看我的模型应该是什么样的,以便我可以将两个列表传递给我的View?
我正在引用此链接,但它与我的场景完全不符: http ://forums.asp.net/t/1998033.aspx ?Passing+multiple+Models+to+View+from+Controller
我还在stackoverflow中对其他类似的问题进行了评论,但是我无法得到理想的结果。
您应该创建一个ViewModel,其中包含视图中所需的所有信息。
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);
在视图上,您可以从模型中检索信息
Model.TheFirstTable
或者在foreach循环中使用它
@foreach(var row in Model.TheFirstTable) {
//do something with the row
}
更改模型bothTable
是List<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);
适当的包装使这项工作是
public class ListData
{
public IEnumerable<EntityFrameworkModel1> List1 { get; set; }
public IEnumerable<EntityFrameworkModel2> List2 { get; set; }
}
然后,Controller将值传递给视图,如下所示。
var dbtables = new OtherContext();
string userId = User.Identity.GetUserId().ToString();
ListData listdata = new ListData();
var list1 = dbtables.EntityFrameworkModel1.ToList()
.Where(c => c.OwnerId == userId && c.Active == true)
.OrderBy(c => c.DateAdded).Reverse();
ListData.List1 = list1;
.. return View(listdata);
MVC 5.2 EntityFramework 6.0 VS 2017
然后视图模型可以引用为..
@model App.Models.ListData
@foreach (var record in Model.List1)
{
<div class="form-row">
<div class="Info1">
@record.Field1 [@record.Field2]
@record.Field3
</div>
<hr />
</div>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.