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

代わりに、JavaScript 関数でこれを試してください(プロトコルOpenViewerWindowを使用する必要があります: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>

また、コードには別の問題があります。URLを計算するために使用Server.MapPathしますが、このメソッドはサーバー上のファイルへの絶対パスを返します。クライアントは明らかに絶対パスでアクセスできません。Url.Contentヘルパーを使用して URL を渡す必要があります。

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 に答える