ASP.NET - 加载两个以上

时间:2018-01-25 14:56:07

标签: html asp.net razor

我想从我的数据库中加载符合条件的所有照片> 2.

enter image description here

当PCProductID在PCPhotoID中有一条记录时,我想添加单个图像,但是当它重复时,例如PCProductID == 2有两条记录PCPhotoID,我希望它们加载到滑块中。

我不知道如何写出正确的条件。

<div class="row images">
            @foreach (var item in Model.PCPhotos)
            {

                if (Model.PCProduct.PCProductID == item.PCProductID)
                {

                    <img src="~/Content/PCProduct/@item.IconFileName" />

                }
            }
        </div>

ProductViewModel:

public IEnumerable<PCPhoto> PCPhotos { get; set; }
public PCProduct PCProduct { get; set; }

StoreController:

public ActionResult PCDetails(int id)
        {
        var pcproduct = db.PCProducts.Find(id);
        var producer = db.Producers.ToList();
        var networkcard = db.NetworkCards.ToList();
        var soundcard = db.SoundCards.ToList();
        var computercase = db.ComputerCases.ToList();
        var ram = db.RAMs.ToList();
        var graphic = db.Graphics.ToList();
        var cpu = db.CPUs.ToList();
        var motherboard = db.Motherboards.ToList();
        var pcphotos = db.PCPhotos.ToList();

        var vm = new ProductViewModel
        {
            PCProduct = pcproduct,
            Producer = producer,
            NetworkCards = networkcard,
            SoundCards = soundcard,
            ComputerCases = computercase,
            RAMs = ram,
            Graphics = graphic,
            CPUs = cpu,
            Motherboards = motherboard,
            PCPhotos = pcphotos
        };


        return View(vm);
        }

class PCProduct:

    public class PCProduct
    {
         public int PCProductID { get; set; }

         public ICollection<PCPhoto> PCPhotos { get; set; }
          // More stuff and fks added
     }

类PCPhoto:

public class PCPhoto
    {
        public int PCPhotoID { get; set; }
        public int PCProductID { get; set; }

        public string IconFileName { get; set; }

        public PCProduct PCProduct { get; set; }

    }

编辑:我需要在我的pcproduct上查看其他表格中的更多数据,例如有关CPU,主板等的信息。有没有办法做到这一点?

PS。您的代码有效,但pcphotos.count()== 1被跳过只有第二个contidion工作,但显示所有照片甚至第一张单图像

1 个答案:

答案 0 :(得分:0)

查看您的模型和数据库,很明显每个产品都可以与一个或多个照片相关联,并且这可以通过您的实体类来表示。

viewmodel中的Product对象已经包含相关的照片 - Entity Framework将根据您的外键为您填充它们。如果有多张照片,请使用滑块。如果没有,请不要:

查看:

@Model ProductViewModel

<div class="productid">Product ID: @Model.PCProduct.PcProductID</div>
<div class="row images">
   @if (Model.PCProduct.PCPhotos.Count() == 1) {
     <img src="~/Content/PCProduct/@Model.PCProduct.PCPhotos.ElementAt(0).IconFileName" />
   }
   else if (Model.PCProduct.PCPhotos.Count() > 1)
   {
      //here you create the HTML for the slider. You may need a foreach to loop through Model.PCPhotos and make some HTML or JSON for each one, depends on what the slider plugin requires.
   }
</div>

您使用的视图模型具有两个单独的列表,完全取消了产品中的照片,因此很难/无法在数据项之间建立所需的连接。相反,您可以利用已经可用的结构,如此示例所示。您根本不需要单独的ViewModel对象来完成此任务。