如何在此场景中执行where子句?

时间:2015-07-11 11:55:56

标签: c# asp.net-mvc asp.net-mvc-4 razor foreach

dbo.Images - 表格 http://imgur.com/g1suOTj

Image.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))" />

参考上面的代码,我试图通过选择相关的ImagePath来显示表中的ID。让@Html.DisplayFor检索并查看'ImagePath' Where ID中的图片的值为2或3或4.这样成功完成后我就可以输入任何网址存储的图像从数据库到<img src=""/> .cshtml。以下代码未显示ID值为2的图片。

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

有什么想法吗?

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

1 个答案:

答案 0 :(得分:1)

我认为你错了。

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

您需要的是以下内容。

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

如果没有返回任何项目,则会抛出错误。

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

确保传递给Controller的ID也是2

或者你可以简单地使用返回的任何图像......见下文。

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

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

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