Сравните два списка и передайте в Просмотр - PullRequest
0 голосов
/ 04 августа 2020

Сайт электронной коммерции на ASP. NET Core 3.0

Существует два класса моделей:

  1. Товары
  2. Изображения

Несколько изображений одного Продукта хранятся в таблице Изображений. Я пытаюсь создать страницу всех продуктов, но я борюсь с logi c сопоставления изображения с кодом продукта и передаю его в View, который отображает все продукты в магазине вместе с миниатюрным изображением из Images.cs и заголовком продукта и его цена из таблицы Product.cs. Как сопоставить данные из двух классов моделей и убедиться, что все соответствующие изображения и продукты отображаются соответствующим образом.

Image.cs

public class Image
    {

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ImageID { get; set; }
        public string ProductCode { get; set; }
        public virtual Product Product { get; set; }
        public byte[] Pic { get; set; }
        public string FileName { get; set; }
        public string ContentType { get; set; }

    }

Product.cs

public class Product
    {
        public Product()
        {
            ICollection<Category> Categories = new HashSet<Category>();
            ICollection<Image> Images = new HashSet<Image>();
        }
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ProductID{ get; set; }
        [Required, StringLength(150)]
        public string ProductCode{ get; set; }
        [Required, StringLength(150)]
        public string Title { get; set; }

        [StringLength(500)]
        public string Description { get; set; }
        
        public int Price { get; set; }

        [StringLength(150)]
        public string Type { get; set; }

        [ForeignKey("Category")]
        [Required]
        public int CategoryId { get; set; }
        public virtual Category Category { get; set; }

        public virtual ICollection<Category> Categories { get; set; }
        public virtual ICollection<Image> Images { get; set; }

    }

Хотите создать что-то вроде этого: изображение здесь

1 Ответ

0 голосов
/ 05 августа 2020

Что-то вроде этого?

Если у вас есть отношения между продуктами и изображениями в базе данных,

var list = _context.Product.Include(x => x.Image).ToList();

Если у вас нет отношений,

var imageslist = _context.Image;
var list = _context.Product.Select(x => new Product()
          {
              ProductId = x.ProductId,
              Title = x.Title,
              Price = x.Price,
              Description = x.Description,
              Images = imageslist.Where(y => y.ProductCode == x.ProductCode).ToList()
          }).ToList();

затем передайте список для просмотра и используйте @model List в вашем представлении для отображения всех продуктов.

EDITED 2

Ваша страница просмотра

@model IEnumerable<Product>

@{
    foreach (var item in Model)
    {
        var base64image = Convert.ToBase64String(item.Images.FirstOrDefault().Pic);
        <div class="col-xs-6 col-sm-4 col-md-3 col-lg-3">
            <table>
                <tr>
                    <td>
                        <img src="data:image/png;base64,@base64image" height="100">
                    </td>
                </tr>
                <tr>
                    <td>@item.Title</td>
                </tr>
                <tr>
                    <td>@item.Price</td>
                </tr>
            </table>
        </div>
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...