如果我没有提供正确的信息,请原谅我,我是这个MVC
事的新手。
我正在使用下面的LINQ语句,问题是图像URL 没有显示。有什么想法吗?提前致谢
控制器:
public ActionResult Index()
{
var cars = from c in db.Cars
from m in db.Makes from u in db.CarImages
where c.carID == m.makeID && u.CarID == c.carID && (u.thumbnail.Equals("true"))
select c;
return View(cars.ToList());
}
查看:
@Html.DisplayFor(modelItem => item.CarImage.imageUrl)
更多信息: 我使用代码第一种方法。
车型:
public class Car
{
public int carID { get; set; }
public int makeID {get; set;}
public string registration { get; set; }
public string color { get; set; }
public Decimal price { get; set; }
public string fuel { get; set; }
public DateTime tax { get; set; }
public DateTime mot { get; set; }
public DateTime manufactureDate { get; set; }
public string shortDescription { get; set; }
public string longDescription { get; set; }
public virtual Make Make { get; set; }
public virtual CarModel CarModel { get; set; }
public virtual CarImage CarImage { get; set; }
}
CarImage模型
public class CarImage
{
public int CarImageID { get; set; }
public int CarID { get; set; }
public string imageUrl { get; set; }
public string thumbnail { get; set; }
}
制作模型
public class Make
{
public int makeID { get; set; }
public string makeName { get; set; }
}
的DbContext
public class CarStudioDBContext : DbContext
{
public DbSet<Car> Cars { get; set; }
public DbSet<Make> Makes { get; set; }
public DbSet<CarImage> CarImages { get; set; }
public DbSet<CarModel> CarModels { get; set; }
}
感谢帮助人员
答案 0 :(得分:1)
不使用Html.DisplayFor()
助手,只需输出属性值
@item.CarImage.imageUrl
或者,如果您希望它是实际图像,您可以执行以下操作
<img src="@item.CarImage.imageUrl" alt="Car Pic"/>
其他信息:
我认为你错过了从CarImages到汽车的联系。我看到你有你的外键(carId),但你还需要一个实体对象将它绑回汽车。
public class CarImage
{
public int CarImageID { get; set; }
public int CarID { get; set; }
public string imageUrl { get; set; }
public string thumbnail { get; set; }
public virtual Car Car { get; set; }
}
基于examples here。你需要为Make做同样的事情,但是以不同的方式。最后,一旦所有内容捆绑在一起,我认为你不需要复杂的linq查询。
答案 1 :(得分:1)
您可能想要检查LINQ是否返回正确的数据,因为我可以看到您正在使用carID加入makeID,这看起来不正确。
实际上你不需要在linq中加入表,只需要使用Include方法来包含属性:
var cars = from c in db.Cars.Include("Make").Include("CarImage")
select c;