использовать отфильтрованные данные из 3 таблиц базы данных в MVC - PullRequest
0 голосов
/ 28 октября 2018

У меня есть таблицы (клиенты, клиенты, продукты).что в таблице предпочтений клиента хранятся идентификаторы customerID и PorductID, которые показывают, какой продукт является предпочтительным для какого клиента.Я хочу показать все продукты (с пустым значком сердца) на странице, и если у клиента есть любимый продукт, значок этого продукта должен быть заполнен значком сердца.

вот мой код:

Контроллер:

public ActionResult Index()
    {
        ProductRepository BlProduct = new ProductRepository();
        CustomerRepository BlCustomer = new CustomerRepository();
        CustomerLikeRepository BlCusLike = new CustomerLikeRepository();
        var username = User.Identity.Name;
        var customer = BlCustomer.Where(x => x.Email == username).SingleOrDefault();
        var model = new HomeIndexViewModel();
        model.Products = BlProduct.Select();
        if(customer!=null)
        {
            model.Customer = customer;
            model.CostumerLikes = BlCusLike.Where(l=>l.CustomerId==customer.id).ToList();
        }
        return View(model);
    }

ViewModel:

public class HomeIndexViewModel
{
    public IEnumerable<MySIte.Models.DomainModels.Product> Products { get; set; }
    public MySIte.Models.DomainModels.Customer Customer { get; set; }
    public IEnumerable<MySIte.Models.DomainModels.CostumersLike> CostumerLikes { get; set; }
}

Просмотр:

 @foreach (var item in Model.Products)
                    {
                            <div class="product-thumb clearfix" style="height:100%;">
                                <a href="@item.id">
                                    @Html.ImageFor(modelItem => item.ImgUrl, new { width = "500" }, "Tulips.jpg", "Files", "UploadImages")
                                </a>
                            </div>
                            <div class="product-info clearfix">
                                <span class="product-title">@item.Name</span>
                                <div class="price">
                                    <del>
                                        <span class="regular">$@item.Price.ToPrice()</span>
                                    </del>
                                    <ins>
                                        <span class="amount">$@item.Price</span>
                                    </ins>
                                </div>
                            </div>
                            <div class="add-to-cart text-center">
                                <a data-toggle="modal" data-target="#@item.id"><i class="fa fa-search"></i>  quick  view</a>
                            </div>
                            @if (Model.Customer.Email==User.Identity.Name)
                            { 
                            <a href="#" class="addWish like" data-product="@item.id"><i class="fa fa-heart-o" style="color:red;"></i></a>
                            }
                        </li>
                    }

В разделе просмотра есть оператор IF. В этом месте я хочу изменить значок на «fa-heart», если это предпочтение клиентов.

Как я могу получить данные Customerlike и проверить, если Customerid иИдентификатор продукта доступен в таблице.

1 Ответ

0 голосов
/ 28 октября 2018

я наконец-то понял, как проверить, существуют ли Customerid и productid в таблице, привязанной к клиенту.

ввиду того, что я должен написать оператор if, как показано ниже:

"if"часть зрения:

 @if (Model.Customer.Email == User.Identity.Name)
       {
        if (Model.CostumerLikes.Where(x => x.ProductId == item.id && x.CustomerId== Model.Customer.id).Count()==1)
              {
               <a href="#" class="addWish like" data-product="@item.id" data-user="@Model.Customer.id"><i class="fa fa-heart" style="color:red;"></i></a>
              }
       else
              {
               <a href="#" class="addWish like" data-product="@item.id"  data-user="@Model.Customer.id"><i class="fa fa-heart-o" style="color:red;"></i></a>
              }

       }
...