使用MVC EF,如何通过id?
以外的字段过滤结果?return View(db.Drafts.Where(PublicationId=id));
PublicationId是草稿表中的一列。
感谢任何帮助。
答案 0 :(得分:16)
public ActionResult Index(int id)
{
var drafts = db.Drafts.Where(d => d.PublicationId == id).ToList();
return View(drafts);
}
或者如果你想单身选秀(因为id通常是唯一的):
public ActionResult Index(int id)
{
var draft = db.Drafts.SingleOrDefault(d => d.PublicationId == id);
return View(draft);
}
答案 1 :(得分:4)
我不确定你的Draft
课程是什么样子,但让我们假装看起来像这样:
public class Draft
{
public int Id { get; set; }
public int PublicationId { get; set; }
public string Name { get; set; }
}
您可以编写如下查询:
return View(db.Drafts.Where(d => d.Name == "foo"));
这只会返回名称为“foo”的草稿。这本身可能没用。你很可能希望通过将数据传递到控制器来控制它(查询字符串,表单值,路由值等):
public ActionResult Index(int id, string filter)
{
return View(db.Drafts.Where(d => d.Name == filter));
}
或者您可以过滤多个属性:
public ActionResult Index(int id, string filter)
{
return View(db.Drafts.Where(d => d.Name == filter && d.PublicationId == id));
}
答案 2 :(得分:2)
你熟悉lambdas吗?在where子句的lambda中,您可以指定任何您想要的属性。
return View(db.Drafts.Where(d => d.SomeProperty == value));
我还会考虑将您提供的数据放入模型中的页面,而不是将模型作为实际的POCO模型。 MVC模型驱动显示器,POCO模型驱动您的数据。