如何在这种情况下执行where子句

本文关键字:where 子句 执行 这种情况下 | 更新日期: 2023-09-27 18:02:17

dbo.Images-表https://i.stack.imgur.com/wN98b.jpg

图像.cs

 public class Image
        {
            public int ID { get; set; }
            public string ImagePath { get; set; }
            public string Category { get; set; }
        }
        public class ImageDBContext : DbContext
        {
            public DbSet<Image> Images { get; set; }
        }
    }

ImageController.cs

public class ImageController : Controller
{
    private ImageDBContext db = new ImageDBContext();
       public ActionResult Index(int ImageID)
    {
        return View(db.Images.Where(img => img.ID == ImageID).ToList());
    }

Index.cshtml

 @model IEnumerable<MvcMovie.Models.Image>
    @{
        ViewBag.Title = "Index"; }
   <img src="~/Images/@Html.DisplayFor(ImagePath.Where(ImageID == 2))" />

参考上面的代码,我试图通过选择相关的ID来从表中显示ImagePath。使@Html.DisplayFor'ImagePath' Where ID检索和观看图像的值为2或3或4。如果这项工作成功,我将能够将数据库中存储的任何url图像分别输入到.cshtml上的<img src=""/>上。以下代码不显示ID值为2的图像。

 <img src="~/Images/@Html.DisplayFor(ImagePath.Where(ImageID == 2))" />

有什么想法吗

非常感谢您的帮助和时间。

如何在这种情况下执行where子句

我认为你搞错了。

@Html.DisplayFor应该提供html代码来显示您传递的模型/属性。

你需要的是下面这个。

<img src="~/Images/@(Model.First(x=> x.ID == 2).ImagePath)" />

如果没有返回任何项,这将引发错误。

您已经将控制器返回的内容限制为仅特定的ID,并且只能显示此图像。

确保传递给控制器的ID也是2

或者,您可以简单地使用返回的任何图像。。。请参见下文。

<img src="~/Images/@(Model.First().ImagePath)" />

如果您希望控制器返回所有图像,请参阅下面的。

   public ActionResult Index(int ImageID)
    {
        return View(db.Images.ToList());
    }