从另一个班级获得财产c#

时间:2016-12-23 20:15:13

标签: c# asp.net

我正在尝试用C#开店,这是在这些表格中组成的:

- 产品(id,name,desc,Images) -images(id,name,path,product_id)

最重要的类是产品,其字段为:

public class Product
{
    //Id of product
    public int Id { get; set; }
    //Ref of product
    public string Ref{ get; set; }
    //prize
    public double Prize{ get; set; }
    //Name
    public string NameProd{ get; set; }
    //Descr of product
    public string DescProduct { get; set; }
    //Iva of product
    public IVA Iva { get; set; }
    //Stock of the product
    public int Stock{ get; set; }
    //Category of product
    public Category Category { get; set; }
    //Images of the product
    public List<Imgs> Images { get; set; }
}

如您所见,图像是类图像的列表,由以下组成:

    //Id of image
    public int ID { get; set; }
    //Name of Img
    public string NameImg { get; set; }
    //Path of Img
    public string PathImg { get; set; }
    //FK product table
    [ForeignKey("Product")]
    public int Product_Id { get; set; }
    //Product
    public Product Product { get; set; }

问题是当我试图拍摄相应产品的图像时,在另一个类中有一个方法从数据库中获取所有数据,该方法由以下内容组成:

      public IQueryable<T> GetAll() {
        return Context.Set<T>();
    }

我正在尝试使用此系统获取shop.aspx.cs中的所有数据:

   protected void Page_Load(object sender, EventArgs e)
    {
        context = new ApplicationDbContext();
        productManager = new ProductManager(context);

        var products = productManager.GetAll().Include(i => i.Images);

        foreach (var product in products)
        {
            var headRow = new TableHeaderRow();
            var row = new TableRow();

            headRow.Cells.Add(new TableCell { Text = product.NameProd});
            row.Cells.Add(new TableCell { Text = product.Category.ToString() });
            row.Cells.Add(new TableCell { Text = "<img src='"+ product.Images.Select(i => i.PathImg).ToList() +"'/>" });
            tbody.Controls.Add(headRow);
            tbody.Controls.Add(row);
        }
    }

但它不起作用,我得到了绝对的坚持。任何帮助在这个时候是如此有用...提前致谢!

3 个答案:

答案 0 :(得分:0)

由于每个产品都有多个图像集,因此不清楚您需要为该产品显示哪个图像。

假设您需要在Images的{​​{1}}集合中显示第一张图片。

您可以替换

Product

row.Cells.Add(new TableCell { Text = "<img src='"+ product.Images.Select(i => i.PathImg).ToList() +"'/>" });

答案 1 :(得分:0)

我认为您走在正确的轨道上,但是当您从产品中访问图像时,我可以看到您的一对多关系存在问题。例如这一行:

row.Cells.Add(new TableCell { Text = "<img src='"+ product.Images.Select(i => i.PathImg).ToList() +"'/>" });

我会改为:

var image = product.Images.FirstOrDefault();
if (image != null)
{
    row.Cells.Add(new TableCell { Text = "<img src='"+ image.PathImg +"'/>" });
}

我在这里使用的是您的产品的第一张图片,但您可以轻松地将逻辑更改为首选图片而不是另一张图片。

答案 2 :(得分:0)

感谢所有帮助过我的用户,现在正在努力!一般只有另一个问题,在这种情况下,每个产品只有一个图像,但是...如果每个产品有多个图像,这是显示不同图像的最佳选择?谢谢你的帮助!