asp.net 根据正确的ID显示图像

gjmwrych  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(149)

我正在做一个学校项目,我试图在我的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,但没有成功。
我会很感激任何帮助!:)

wkyowqbh

wkyowqbh1#

这可能取决于你的观点在哪里。请尝试指定一个相对路径,而不是从当前目录,而是从根目录。路径必须以/开头,例如:“/images/filename.jpg”

@foreach (var item in Model.Products)
{
    @if (Model.ProductImages.ContainsKey(item.ProductID))
    {
       var imagePath = $"/{Model.ProductImages[item.ProductID]}";
       <img src="@imagePath" alt="Product Image"/>
    }
}

字符串
页面生成后,请从浏览器的源代码复制<img src="@imagePath" alt="Product Image"/>

相关问题