2015-07-11 95 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