我有一个带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);
}
现在我如何显示该提议者的项目?
答案 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>
因为您正在发送列表和视图,所以您正在变为单一,因此也将其更改为列表