Как отобразить только одно изображение в представлении из нескольких изображений в базе данных? (ASP. NET MVC) - PullRequest
1 голос
/ 12 апреля 2020

У меня есть несколько изображений для одного продукта в базе данных. Я создал две таблицы. Один для Products и другой для Photos продуктов. И я хочу показать только одну фотографию на странице. Мой код ниже. Я попытался объявить переменную в представлении. Но есть ошибка:

PhotoProduct '- это тип, который недопустим в данном контексте

Есть ли другой способ для этого?

Вот мой код:

@foreach (Product prd in Model.Prod.Where(i => i.userid == Model.userr.ID))
{
    <div class="col-md-4">
    <figure class="card card-product mehsul">
    @PhotoProduct prphoto = Model.Photopr.Where(ph => ph.Product.id == ph.id).Take(1).ToList()
    {
        <div class="img-wrap"> <img class="img-fluid mehsulimg" src="@prphoto.Photo" alt=""> </div>
    }
    <div class="handhover">
    <img class="img-fluid" src="~/PublicFront/images/serv2b712.jpg" alt="">
    </div>
    <figcaption class="info-wrap">
        <h4 class="title">@prd.ProdName</h4>
        <p class="@prd.Price"></p>
    </figcaption>
    <div class="bottom-wrap">
        <a href="" class="btn btn-sm btn-primary float-right">Order Now</a>
        <div class="price-wrap h5">
            <span class="price-new">$1280</span> 
            <del class="price-old">$1980</del>
        </div> <!-- price-wrap.// -->
    </div> <!-- bottom-wrap.// -->
</figure>
</div> <!-- col // -->
}  

1 Ответ

1 голос
/ 12 апреля 2020

Я видел ваши модели в этом вопросе раньше Ошибка: значение не может быть нулевым. Имя параметра: источник .

В вашей фотомодели вы уже объявляете PhotoProducts как виртуальный; public virtual ICollection<PhotoProduct> PhotoProducts { get; set; }

Использование виртуального в EntityFramework означает, что вы «лениво загружаете» этот объект или этот объект автоматически загружается.

Поскольку он загружается автоматически, вы можете сделать;

@foreach (Product prd in Model.Prod.Where(i=>i.userid==Model.userr.ID))
{
   // ...

   @if(prd.PhotoProducts.FirstOrDefault() != null){
      <div class="img-wrap">
         <img class="img-fluid mehsulimg" src="@prd.PhotoProducts.First().Photo" alt="">
      </div>
   }else{
      <div class="img-wrap">
         <img class="img-fluid mehsulimg" alt="No Photo Available">
      </div>
   }

   // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...