显示MVC中不同表的数据列表

时间:2015-04-03 19:40:13

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

我有一个带CRUD的基本MVC应用程序。我有2个表Project和Proposer,有一个可能的关系。

当用户点击“详细信息”链接时,它会详细说明有关投标人的信息,但我想要显示该投标人提议的所有项目。

这是我目前的详细信息方法

    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Proposer proposer = db.Proposers.Find(id);
        // I got the ID here now how do i compare with the projects?
        if (proposer == null)
        {
            return HttpNotFound();
        }
        return View(proposer);
    }

现在我如何显示该提议者的项目?

2 个答案:

答案 0 :(得分:0)

using System.Linq

更改

db.Proposers.Find(id)

var proposer =  db.Proposers.FirstOrDefault(p=>p.ID==id.Value);

如果在表格中这是唯一的,则只返回记录。

要返回列表,您可以这样做 -

var proposer =  db.Proposers.Where(p=>p.ColumnID==id.Value).ToList();

return View(proposer)

您应该传递列表类型对象,这在您的情况下是正确的。

但是在视图中你获得了单个实体。

传递此内容以返回查看

    var proposer =  db.Proposers.FirstOrDefault(p=>p.ID==id.Value);//not the list type
    return View(proposer); 

注意 - 当您拥有对象的单个实体时,不要传递列表类型对象。您试图传递列表类型对象,而视图中的模型要求单个实体。

答案 1 :(得分:0)

这是你视图中的问题,而不是这个

@model yourappname.Models.Proposers 

试试这个

@model List<yourappname.Models.Proposers>

因为您正在发送列表和视图,所以您正在变为单一,因此也将其更改为列表