我想从我的数据库中加载符合条件的所有照片> 2.
当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工作,但显示所有照片甚至第一张单图像
答案 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对象来完成此任务。