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

标签 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');
}

最佳答案

您需要先解析 URL。

尝试更改您设置 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

关于从 ASP .NET Hyperlink NavigateURL 属性调用 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946218/

相关文章:

javascript - 如何在 asp.net 的 javascript 文件中使用本地化消息

c# - 在文件夹中保存具有唯一名称的上传文件

asp.net - .net 本地主机网站始终进行 get arterSignalR/poll?transport=longPolling&connectionToken= 调用

c# - Global.asax 中的 ASP.NET 导入命名空间错误

javascript - Ajax 数据未在下拉列表中正确绑定(bind)

javascript - 仅通过透明部分上传图像

javascript - 连接API的WebApp与后端渲染的区别

javascript - Mapbox GL JS : Distance Measuring - KM to MI display

javascript - 使用ngFor解析二维数组时在表格单元格中添加复选框

javascript - 由数组选择的 jQuery css 左/右