2015-07-11 87 views
1

dbo.Images - 表 http://imgur.com/g1suOTj如何在这种情况下执行where子句?

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

参考上面的代码,我试图通过选择相关的ID从表中显示ImagePath。有@Html.DisplayFor检索和查看图像'ImagePath'WhereID值2或3或4.有了这个工作成功,我将能够输入任何URL存储的图像数据库上.cshtml个别。下面的代码并不显示具有ID形象价值2

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

任何想法?

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

+0

如果你要运行一个where查询,那么你不需要我认为的foreach循环。你的问题不是很清楚...... – scartag

+0

问题已更新。 –

+0

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

回答

1

你想错了,我想。

@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()); 
    } 
+0

..但是我如何显示表格中的特定图像?例如,如果我想让ID == 3的图像和ID == 4的图像,而不更改控制器中的任何内容......以便从中选择ID。 –

+0

控制器是图像列表应该来自哪里..所以如果你已经限制它在那里,你不能得到它的cshtml页面。如果你想能够选择它,那么你必须从控制器中删除where子句。我会更新我的答案 – scartag

+0

很高兴知道它为你工作:) – scartag