2010-07-04 70 views
1

我的問題與This question類似,但不同,我覺得它保證一個單獨的線程。顯示來自視圖模型的圖像。 MVC

所以我有以下'視圖';

// A load of other calls to Model.Title, Model.Description, Model.DownloadURL 
// which work fine so no issues with actually ViewModel communication. 
<fieldset> 
    <div id="projectDiv"> 
         // Model.ThumbnailPath is a fully qualified path to an image 
         // stored on disk, within another folder in another project. 
     <img src="<%= Model.ThumbnailImagePath %>" alt="Thumbnail Image" height="100px" width="100px" /> 

    </div> 

不幸的是,所有我得到的是一個概述的白盒......沒有圖像。

我調試了應用程序並截獲了發送到ViewModel並將其粘貼到我的計算機資源管理器中的文件路徑變量。我得到了我期待的形象。

我已經嘗試將此文件路徑硬編碼到源屬性中,並仍然是一個空白的框。

此Viewpage中還有許多其他屬性正在完美顯示,因此通過應用程序層的通信正在運行。

任何想法爲什麼這可能無法按預期方式發揮作用?

謝謝你的時間。

回答

2

src屬性必須是URL而不是文件路徑。如果可以,將圖像放入內容/圖像文件夾中,並在那裏引用網址。如果不是,即文件需要保留在原來的位置,那麼可以考慮讓控制器讀取圖像並將其作爲帶有正確MIME類型的ContentResult返回,並將controller/action/image-identifier的url用作圖像的src屬性。

<img src="<%= Url.Content("~/images/thumbnails/" + Model.ThumbnailName) %>" ... 

<img src="<%= Url.Action("thumbnail", "image", Model.ImageID) %>" ... 
0

雖然這不會使總感覺在此框中回覆答案,我需要編寫代碼。

我真的不明白你會在你的建議場景tvanfosson中的東西的控制器端寫什麼。

以下是存在:MySolution.Models.Entities.Images.ProjectThumbnails

一中的影像文件夾中。在這個文件夾中存在多個bmp,根據它們所屬實體的GUID進行命名。

現在我有一個控制器:MySolution.Controllers.ProjectsController用的方法如下:

public ContentResult ProjectThumbnails(Guid Id) 
{ 
    ContentResult result = new ContentResult(); 

    Project project = projectService.GetProject(Id); 
         //This is still a fully qualified disk location path 
    result.Content = project.ThumbnailImagePath; 
    return result;    
} 

然後在視圖中:

<img src="<%= Url.Content(~/ProjectThumbnails/" + Model.Id) %>" /> 

但是,我沒有得到任何來自智能感知鍵入「Url.Content 「這很少是一件好事,而且,我運行的網站我得到以下錯誤:

」編譯器錯誤消息:CS1010:新行常量「隨着錯誤poi狩獵線。

你能否澄清我可能會在這裏失蹤?考慮到MVC在製作網站的大多數其他方面很容易,因此很難說圖像處理有多困難。

0

嘗試使用...

<img src="@Url.Content("~/ProjectThumbnails/" + Model.Id)"/>