繁体   English   中英

从另一个类C#获取属性

[英]Get property from another class c#

我试图在C#中开一家商店,这些表格在此时组成:

-产品(ID,名称,描述,图像)-图像(ID,名称,路径,产品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);
        }
    }

但这是行不通的,而且我完全被卡住了。 目前任何帮助都非常有帮助...预先感谢!

目前尚不清楚您需要为该产品显示哪个图像,因为每个产品都有多个图像集合。

假设,你需要显示可用的第一个图像Images集合中的Product

您可以更换

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

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

我认为您走的路是正确的,但是当您从产品访问图像时,我发现一对多关系存在问题。 例如以下行:

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 +"'/>" });
}

在这里,我使用的是为您的产品找到的第一个图像,但是您可以轻松地更改逻辑,以优先选择一个图像。

感谢所有为我提供帮助的用户,现在可以正常工作! 通常只有另一个问题,在这种情况下,每个产品只有一个图像,但是...如果每个产品都具有一个以上图像,那么显示不同图像的最佳选择是什么? 感谢您的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM