包含路径表达式必须引用在类型上定义的导航属性

时间:2012-12-13 06:13:22

标签: asp.net-mvc-3 collections model path

我有两个型号说“Page”“产品”产品的PageID指的是Page的ID

在我的产品索引视图中,我需要将页面列表作为下拉列表,因为我正在使用

public ViewResult Index()
{
   var products = _db.Products.Include(p => p.Page);
            return View(products.ToList());
}

但我需要的只是那些 PageGroup 属性的值'Product'的网页。因为我用了

public ViewResult Index()
{
    var products = _db.Products.Include(p => p.Page.PageGroup
                                   .Contains(PageGroup.Product.ToString()));
    return View(products.ToList());
} 

它给出了如下错误:

  

Include路径表达式必须引用导航属性   在类型上定义。使用虚线路径进行参考导航   属性和集合导航的Select运算符   属性。参数名称:路径

1 个答案:

答案 0 :(得分:3)

而不是

var products = _db.Products.Include(p => p.Page.PageGroup.Contains(PageGroup.Product.ToString()));

你想要这样的东西。

var products = _db.Products.Include(p => p.Page).Where(p => p.Page.PageGroup.Contains(PageGroup.Product.ToString());

您可能需要包含更多子属性(如PageGroup)来检查您的实际情况,但在不了解您的数据模型的情况下,我无法肯定地说。