2011-10-04 27 views
2

用這個掙扎了一下......我周圍讀了一遍,發現我應該使用HostingEnvironment.MapPath()。什麼是在MVC靜態方法中映射圖像路徑的正確方法

但是,每次嘗試使用此方法時,我都會被告知虛擬路徑不被允許。

我有位於下(項目)\內容\圖像文件\ MyImage.jpg

Image image = Image.GetInstance(HostingEnvironment.MapPath("/") + "/Content/Images.cslogo_highres.jpg"); 

找不到路徑「一部分C:\的Inetpub \ wwwroot的\內容\圖片\ cslogo_highres.jpg」。

Image image = Image.GetInstance(HostingEnvironment.MapPath("Content") + "/Images/cslogo_highres.jpg"); 

相對虛擬路徑 '內容' 這裏不允許使用。

我試了幾個其他的組合,搜索了一下,但一直沒有能夠拿出一些有用的東西。我真的只想使用ResolveUrl(〜/ Content/Images/cslogo_highres.jpg),但它似乎不是靜態方法下的選項。

對不起,如果這是微不足道的,但我得到沮喪的猜測和檢查路徑。

編輯:答案,令人驚訝的不是簡明扼要人們所期望的:

Image image = Image.GetInstance(HostingEnvironment.MapPath(VirtualPathUtility.ToAbsolute("~/Content/Images/cslogo_highres.jpg"))); 

回答

3
Image image = Image.GetInstance(HostingEnvironment.MapPath(VirtualPathUtility.ToAbsolute("~/Content/Images/cslogo_highres.jpg"))); 
+0

頁面無法在這種情況下存在。 –

+0

現在試一試,不確定代碼運行在什麼上下文中,我假設一個控制器? –

+0

確實。對不起,我應該更清楚了。我檢查了你的編輯 - 但不,Url也無法從這裏訪問。它確實給了我一個新的googleable術語,儘管這最終得出了正確的答案。將您的幫助標記爲正確,將原始帖子中的答案編輯。 –

相關問題