从ASP .NET Hyperlink NavigateURL属性调用Javascript函数

时间:2011-02-09 14:32:37

标签: javascript asp.net

我有一个ASP表,我在页面加载事件上动态创建。在那种情况下,我使用标题填充ASP表,然后使用指向.ashx页面的ASP .NET超链接控件填充文件以供客户端下载。

对于特定文件(图像文件),我想启动一个javascript函数来打开一个新窗口,其中显示该文件。我有所有代码来执行此操作,但我无法让我的Javascript函数在超链接NavigateURL属性中工作。我对Javascript很新,所以我不确定我错过了什么。我可以做我想做的事吗?我可以不使用表格控件吗?

ASP代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim iWineID As Integer

    If Not Integer.TryParse(Request.Params("WineID"), iWineID) Then Throw New InvalidOperationException("Invalid request")
    Me.lblWineName.Text = Utils.GetWineName(iWineID)
    Dim dtDocs As New dsDocs.docsDataTable

    Using taDocs As New dsDocsTableAdapters.docsTableAdapter
        dtDocs = taDocs.GetDataByProdIDOrWineID((Utils.GetProducerIDByWineID(iWineID)), True, iWineID)
    End Using

    If dtDocs.Rows.Count = 0 Then
        Me.lblDocsFound.Text = "No documents available for this wine."
    Else
        Me.NumberDocs(dtDocs)

        For Each drDoc As dsDocs.docsRow In dtDocs
            Dim myRow As New TableRow
            Dim myTitleCell As New TableCell
            Dim myDLCell As New TableCell
            Dim myHL As New HyperLink
            Select Case drDoc.doc_type_id
                'window.open('preview.aspx?WineID=' + nWineID', 'height=' + nWindowHeight + ',width=' + nWindowWidth + ',status=no,toolbar=no,menubar=no,location=no,scrollbars=' + bScrollbars + ',resizable=' + bScrollbars + ',titlebar=no');
                Case Constants.DocType.BottleShot, Constants.DocType.Label, Constants.DocType.Logo
                    myHL.NavigateUrl = "javascript:OpenPrev('" & drDoc.doc_id & "');return false;" '"javascript:window.open('~/Home/docpreview.aspx?DocID=" & drDoc.doc_id '& "','_blank', 'height=600, width=600,status=no,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=no,titlebar=no'"
                    '"~/Home/docpreview.aspx?DocID=" & drDoc.doc_id
                    myHL.Text = "View"
                Case Else
                    myHL.NavigateUrl = "~/Home/docs.ashx?DocID=" & drDoc.doc_id
                    myHL.Text = "Download"
            End Select

            myTitleCell.Text = StrConv(drDoc.doc_type_name, VbStrConv.ProperCase)
            myDLCell.Controls.Add(myHL)
            myRow.Cells.Add(myTitleCell)
            myRow.Cells.Add(myDLCell)
            Me.tableDocs.Rows.Add(myRow)
        Next
    End If
End Sub

的Javascript

function OpenPrev(DocID){

var objWin
var myURL

alert("GO!");
myURL='~/Home/docpreview.aspx?DocID=' + DocID;
objWin=window.open(myURL, 'Doc View', 'width=600,height=600,resizable=no,scrollbars=yes,toolbar=no');
}

2 个答案:

答案 0 :(得分:2)

您需要先解析网址。

尝试更改设置NavigateURL的任何位置:

myHL.NavigateUrl = "~/Home/docs.ashx?DocID=" & drDoc.doc_id

致:

myHL.NavigateUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "Home/docs.ashx?DocID=" & drDoc.doc_id

答案 1 :(得分:0)

@JoeEnos - 这绝对是其中的一部分。尝试使用“http://www.google.com”之类的内容myURL,然后查看。会发生什么。

查看HTML页面的来源,查看生成的超链接的外观。 href属性可能看起来不对。

相关问题