如何在MVC5 EF的单个视图中显示来自两个不同表的数据列表?
例如,我有两个表(项目/提议者),在Proposer
视图中我有Create
,Edit
和Details
个页面。当用户点击Details
链接时,该页面会显示该提议者的详细信息。但是,如何显示该提议者的项目列表?
这是我目前的ProposerController
:
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Proposer proposer = db.Proposers.Find(id);
var proposers = db.Proposers.ToList();
if (proposer == null)
{
return HttpNotFound();
}
return View(proposer);
}
答案 0 :(得分:1)
假设db
是您的上下文,您可以使用Project
访问您的表db.Projects
,就像使用Proposer
一样。然后,只需按照评论中的建议编写一个ViewModel并显示它 - voilà。
答案 1 :(得分:1)
你的LINQ查询应该是这样的:
var proposer = db.Proposers
.Include(x => x.Projects)
.SingleOrDefault(x => x.ID == id);
Include
语句告诉实体框架使用相同的查询包含Projects数据,导致只有一次调用DB。
然后您访问项目,如:
foreach(var project in proposer.Projects)
{
// Do your stuff
}
尽管如此,我强烈建议您阅读有关如何将数据传递和/或转换为表示层的ViewModel和最佳实践。