我正在做一个学校项目,我试图在我的ASP.NET应用程序中为每个产品显示一个图像。然而,我已经在这个问题上了一整天,我似乎找不到解决办法。
在我的控制器中,我有这个代码用于加载每个类别和图像数据的所有产品:
public IActionResult GetProducts(int id)
{
var model = new ShoppingCartModel
{
Products = service.GetProducts().Where(c => c.CategoryID == id),
Categories = categoriesService.GetCategories(),
Images = imageService.GetImages(),
ProductImages = new Dictionary<int, string>()
};
foreach (var product in model.Products)
{
var image = model.Images.FirstOrDefault(img => img.ImageID == product.ImageID);
if (image != null)
{
model.ProductImages.Add(product.ProductID, image.ImagePath);
}
}
return View(model);
}
字符串
我将数据库中的所有数据加载到Images
中,这是一个IEnumerable
。该表包含一个ImageID
和一个ImagePath
,数据如下所示:“1”|'images/filename.png'。每个产品都有一个ImageID
链接到它:
public IEnumerable<Images>? Images { get; set; }
public Dictionary<int, string> ProductImages { get; set; }
型
所有文件都在我的ASP.NET项目的wwwroot
文件夹中。所以wwwroot/images/filename.png
。我的模型也有一个ProductImages
,这是一个Dictionary<int, string>
,我将用它来为产品找到正确的imagePath。
然后,我在foreach
中循环所有产品,为每个产品找到正确的图像并将它们添加到字典中。
我有这样的看法:
@foreach (var item in Model.Products)
{
@if (Model.ProductImages.ContainsKey(item.ProductID))
{
var imagePath = Model.ProductImages[item.ProductID];
<img src="@imagePath" alt="Product Image"/>
}
}
型
当我用src="images/filename.png"
替换src
时,它确实工作。我已经调试了imagePath
,它是正确的imagePath
。我不知道为什么它不工作。我也试过用JavaScript来实现,然后将路径传递回src
,但没有成功。
我会很感激任何帮助!:)
1条答案
按热度按时间wkyowqbh1#
这可能取决于你的观点在哪里。请尝试指定一个相对路径,而不是从当前目录,而是从根目录。路径必须以/开头,例如:“/images/filename.jpg”
字符串
页面生成后,请从浏览器的源代码复制
<img src="@imagePath" alt="Product Image"/>
。