首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET -加载两个以上

ASP.NET -加载两个以上
EN

Stack Overflow用户
提问于 2018-01-25 14:56:07
回答 1查看 62关注 0票数 1

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

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

我不知道怎么写正确的条件。

代码语言:javascript
复制
<div class="row images">
            @foreach (var item in Model.PCPhotos)
            {

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

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

                }
            }
        </div>

ProductViewModel:

代码语言:javascript
复制
public IEnumerable<PCPhoto> PCPhotos { get; set; }
public PCProduct PCProduct { get; set; }

StoreController:

代码语言:javascript
复制
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);
        }

PCProduct类:

代码语言:javascript
复制
    public class PCProduct
    {
         public int PCProductID { get; set; }

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

PCPhoto类:

代码语言:javascript
复制
public class PCPhoto
    {
        public int PCPhotoID { get; set; }
        public int PCProductID { get; set; }

        public string IconFileName { get; set; }

        public PCProduct PCProduct { get; set; }

    }

编辑:我需要在我的do产品视图上更多来自其他表的数据,比如有关CPU、主板等的信息。有什么方法可以这样做吗?

PS.您的代码正常工作,但是pcphotos.count() == 1被跳过,只有第二次连续工作,但是也显示了所有的照片,甚至是第一个图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 15:56:30

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

视图模型中的Product将包含相关的照片-实体框架将根据您的外键为您填充它们。如果有多张照片,请使用滑块。如果没有,就不要:

查看:

代码语言:javascript
复制
@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对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48445807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档