我正在尝试用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);
}
}
但它不起作用,我得到了绝对的坚持。任何帮助在这个时候是如此有用...提前致谢!
答案 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)
感谢所有帮助过我的用户,现在正在努力!一般只有另一个问题,在这种情况下,每个产品只有一个图像,但是...如果每个产品有多个图像,这是显示不同图像的最佳选择?谢谢你的帮助!