2012-04-09 45 views
4

在這部作品中的視覺工作室虛擬服務器加載從文件夾中的內容在IIS上的圖像。但是,當我把網站放在IIS上時,它不會顯示來自內容文件夾的圖像。不能在ASP MVC項目

var imgPath = '/Content/Images/Icons/' + icon + '.png'; 
       var imageContent = '@Server.MapPath(Url.Content("-1"))'; 
       image = imageContent.replace('-1', imgPath); 

我得到了瀏覽器的foreach圖像錯誤

http://localhost/Content/Images/Icons/carwash.png Failed to load resource: the server responded with a status of 404 (Not Found) 

回答

4

的第一件事是第一次,你確定所有的「圖標」是解決方案的一部分,實際上是被部署到Web服務器?我有少數情況下,我想將文件添加到解決方案目錄和VS不會自動包括它的解決方案,因此從來沒有真正得到部署...

如果是OK和圖片實際上是有,我的下一個問題是,你有沒有嘗試過使用視圖中的@Url.Content助手,以確定是否是因爲它的工作應注意什麼?

<img src="@Url.Content("~/Content/Images/Icons/SomeIcon.png")"/> 

編輯

既然你想在Javascript中做到這一點和上面的標籤在HTML工作,你應該能夠凝聚這些代碼在那裏下面的代碼:

var image = '@Url.Content("~/Content/Images/Icons/")' + icon + '.png'; 

來吧,讓MVC獲得路徑圖標文件夾和文件,並擴展追加到。這應該消除字符串替換的需要,並且仍然能夠處理JS中的圖標路徑。

var image現在將是你通過這個功能的圖標文件的完整相對路徑。你可以使用這個字符串來更新和IMG SRC標籤或創建一個圖像或任何。

+0

我使用本地IIS。我只是改變項目的屬性,以使用IIS而不是Visual Studio服務器,因此圖像100%在那裏。我也試過,但沒有。 – 1110 2012-04-09 22:16:22

+0

其實你的代碼如果在html中使用它就像圖像一樣。但我寫在javascript中,我動態地結合路徑和圖像文件名。 – 1110 2012-04-09 22:27:48

+0

比較上面的函數JS輸出的內容和HTML版本輸出差異的源路徑。 – Tommy 2012-04-09 23:09:26