2011-08-20 16 views
0

我正在使用Razor MVC3。我需要在多個視圖中顯示存儲在數據庫中的圖像(如更改網站的徽標)。多次調用MVC3中getImage的問題Razor

我用一個返回FileContentResult的函數解決了它。例如:

public FileContentResult GetFile(int id) 
    { 
     govImage image = db.Image.Single(i => i.imageID == id); 
     return File(image.logo, "image", image.fileName); 
    } 

在的意見,我叫這樣的功能:

<img id="image" src="GetFile/@ViewBag.ImageIndex" width="112" height="87" alt="Image Example" /> 

而在控制器,我加載ViewBag.ImageIndex與函數的輸出,就這樣:

ViewBag.ImageIndex = oValid.returnUniqueIndex(); 

能正常工作的一些意見,但在別人的GetFile函數不叫(我也跟着在調試模式的過程中),甚至當控制器分配在ViewBag.ImageIndex正確的價值。

我失去了整整一天試圖找到發生了什麼事情。有人可以給我一個線索?

在此先感謝

+0

什麼類型的呢'oValid.returnUniqueIndex()'函數的返回?它是一個整數嗎?或可爲空的整數? –

回答

0

您使用的是相對URL(GetFile/@ViewBag.ImageIndex),這是從目前的路徑,而不是根目錄的相對路徑。這意味着如果您的GetFile操作是您HomeController的成員,那麼您的鏈接將無法在其他控制器生成的視圖中工作。

你應該使用類似:

<img id="image" src="/Controller/GetFile/@ViewBag.ImageIndex" alt="Image Example" /> 

甚至更​​好:

<img id="image" src="@Url.Action("GetFile", "ControllerName", new { ViewBag.ImageIndex })" alt="Image Example" /> 
+0

即時通訊使用相對路徑,因爲我試圖在一個自我控制器的意見。即使在某些意見工作和其他人不工作。我正在使用[link](http://www.mikesdotnetting.com/Article/125/ASP.NET-MVC-Uploading-and-Downloading-Files)中描述的方法來包含圖像,用Url.Action進行修復會導致無法調用返回FileContentResult的函數。 – Ender

+0

然後它聽起來像是你的路線有問題。你可以發佈你的路線映射嗎? –