尝试使用MVC5和EF在单个视图中显示其他表中的数据

时间:2015-04-01 22:54:23

标签: c# asp.net asp.net-mvc entity-framework

如何在MVC5 EF的单个视图中显示来自两个不同表的数据列表?

例如,我有两个表(项目/提议者),在Proposer视图中我有CreateEditDetails个页面。当用户点击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);
}

2 个答案:

答案 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和最佳实践。