代码之家  ›  专栏  ›  技术社区  ›  s_h

ASP.NETMVC模型-使用scaffold将模型上创建的连接传递给控制器和视图

  •  2
  • s_h  · 技术社区  · 14 年前

    情况是这样的:ASP.NETMVC公司#

        public IQueryable ProductsList()
        {
            var db = new Entities();
            var results = from p in db.Products
                        join pi in db.ProductPic on p.ProductId equals pi.ProductId
                        // first join
                        join pv in db.ProductDetails on p.ProductId equals pv.ProductId
                        // second join
                        select new
                                   {
                                       p.Name,
                                       p.Description,
                                       p.PCategory,
                                       p.ProductPicture,
                                       pv.Price,
                                       pi.Picture,
                                   };
            return (results);
        }
    

        public ActionResult Index()
        {
            var products = productrepository.ProductsList();
            if (products == null) throw new NotImplementedException();
            else
            return View("Index", products);
        }
    

    视图:我从模型产品创建了一个强类型视图。

    当我创建视图时,我只收到表Product中的字段,而没有收到表Details和Picture中的字段。

    非常感谢!。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Steve Michelotti    14 年前

    将视图强类型化为产品类型,但EF查询返回包含其他字段的匿名类型。为产品视图模型创建类:

    class ProductViewModel
    {
        public string Name { get; set; }
        public string Description{ get; set; }
        public string PCategory{ get; set; }
        public string ProductPicture{ get; set; }
        public string Price { get; set; }
        public string Picture { get; set; }
    }
    

    然后在EF查询的select中,填充这个类型而不是匿名类型。另外,您应该独立地验证EF查询是否返回了预期的结果。

        2
  •  1
  •   Matthew Manela    14 年前