1

我在调用 javascript 函数时遇到问题
我想通过单击链接打开文件。

这是我的代码:

<script language="javascript" type="text/javascript">
var refViewer = null;

function OpenViewerWindow(image) {
    return window.open(image, "Viewer", "height=400px,width=550px,menubar=no,scrollbars=yes ,resizable=yes,top=100px,left=234px");

}


function openViewer(image) {

    if (refViewer != null) {
        if (refViewer.closed == false) {
            refViewer.close();
            refViewer = OpenViewerWindow(image);
        }
        else refViewer = OpenViewerWindow(image);
    }
    else
        refViewer = OpenViewerWindow(image);
}   


</script>

<a onclick=javascript:openViewer(@ViewBag.path)><img src="pic.jpg"/></a>

和在控制器中:

 public ActionResult ActivityPosting(int HobbyDetailID)
    {
string filepath = Server.MapPath("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/ReferenceMaterial/" + item.FilePath);
 ViewBag.path = filepath;
    return view();
   }

问题是javascript函数没有被调用。请帮帮我

4

2 回答 2

0

在你的 JavaScriptOpenViewerWindow函数中试试这个(你需要使用file://协议:

return window.open("file://" + image, "Viewer", "height=400px,width=550px,menubar=no,scrollbars=yes   ,resizable=yes,top=100px,left=234px")
于 2012-05-24T11:04:57.487 回答
0

确保传递一个字符串:

<a onclick=javascript:openViewer('@ViewBag.path')><img src="pic.jpg"/></a>

注意单引号。或者甚至更好地使用 Json.Encode 来确保正确编码传递给您的openViewerjavascript 函数的值:

<a onclick="javascript:openViewer(@Html.Raw(Json.Encode(ViewBag.path)))"><img src="pic.jpg"/></a>

您的代码还有另一个问题。您用于Server.MapPath计算 url,但此方法返回服务器上文件的绝对路径。客户端显然无法使用绝对路径访问它。您应该使用帮助程序传递一个 url Url.Content

public ActionResult ActivityPosting(int HobbyDetailID)
{
    string filepath = Url.Content("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/ReferenceMaterial/" + item.FilePath");
    ViewBag.path = filepath;
    return View();
}
于 2012-05-24T11:06:59.203 回答