2015-06-19 31 views
2

我正試圖在新窗口中打開每個圖像的全尺寸圖像。我使用此代碼:使用剃刀和javascript在新窗口中打開圖像

<script type="text/javascript"> 
function openImage(imageUrl) { 
    window.open(imageUrl); 
} 

@foreach (var image in Model.Images) 
{ 
     <img src="@Url.Action("Thumbnail", "Done", new { width = 150, height = 150, file = @imagen.filename })" alt="@imagen.filename" onclick="openImage('@Url.Content(ViewBag.Path + @imagen.filename)')" /> 
} 

但是使用這個,當我點擊圖片不能打開任何東西。

你能幫我解決這個問題嗎?

謝謝你在先進

編輯的功能openImage由於錯誤代碼

+0

JS控制檯中的任何錯誤? 請調試'imageUrl'到'openImage'的值。 – phts

+0

BTW'imageUrl'參數和'window.open'中的'imgUrl'。這是你的問題的原因? – phts

回答

1

解決方法是獲取以這種方式保存圖像的目錄的URL:string url = Url.Content("~/Images");

0

有一個在這個問題的一些不匹配的變量名的

imageUrl/imgUrl 
image/@imagen 

我會承擔這些的錯別字題。

可能是ViewBag.Path最後缺少/。爲了解決這個問題,不要串聯(+)的URL部分,但使用System.IO.Path.Combine,如:

@Url.Content(Systemm.IO.Path.Combine(ViewBag.Path, image.filename)) 

而不是使用JavaScript onclick,你可以改變你的循環創建簡單的鏈接到新窗口/標籤(這也將是通過鍵盤來導航)

@foreach (var image in Model.Images) 
{ 
    <a target="_blank" href='@Url.Content(ViewBag.Path + @image.filename)'> 
     <img src="@Url.Action("Thumbnail", "Done", new { width = 150, height = 150 })" alt="@image.filename" /> 
    </a> 
} 

如果這不起作用(我希望它不會爲你),請提供詳細信息:

alert('@ViewBag.Path') 

function openImage(imageUrl) { 
    alert(imageUrl); 
} 
+0

執行你放入的foreach代碼,會顯示圖像,但是當我點擊它們時,它們不會打開。路徑試圖打開是這樣的:file:/// c:/users/xxx/documents/visual%20studio%202013/Projects/ProjectOne/ProjectFolder/Images/filename.jpg。該路徑存在,並且當我在瀏覽器中複製並粘貼該路徑時,它將顯示,但在應用程序的正常運行時中無法打開。 – Levimatt

+0

這解釋了你缺少'viewbag.path'的信息。路徑不應該是'file://'任何東西,它應該是'http:// yoursite/subpath/image'。你能確認'@ ViewBag.Path'的值和我建議的警報嗎? –

+0

@ ViewBag.Path正在返回file://格式。在控制器中,我使用此代碼將viewbag傳遞給視圖:ViewBag.Path = Server.MapPath(「〜/ Images /」); – Levimatt

相關問題