2015-06-19 32 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

相关问题