我有一个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');
}
答案 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
属性可能看起来不对。