大家好我有vb代码,当有人点击链接时,我会打电话给他。
Private Sub DownloadFile(ByVal fname As String, ByVal forcedownload As Boolean)
Dim flpth As String
Dim fnm As String
Dim ext As String
Dim tp As String
flpth = System.IO.Path.GetFullPath(Server.MapPath(fname))
fnm = System.IO.Path.GetFileName(flpth)
ext = System.IO.Path.GetExtension(fnm)
tp = ""
If Not IsDBNull(ext) Then
ext = LCase(ext)
End If
Select Case ext
Case ".doc", ".rtf"
tp = "application/msword"
Case ".pdf"
tp = "application/pdf"
Case ".zip"
tp = "application/zip"
End Select
If (forcedownload) Then
Response.Clear()
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = tp
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fnm + ext)
Response.TransmitFile(flpth)
Response.Flush()
Response.End()
End If
End Sub
我想在下面的行中调用上面的代码,但它不起作用。请任何身体帮助。
<a id="Click" runat="server" href="#" onclick="DownloadFile('files/Notes.doc',True)">Click here</a>
答案 0 :(得分:2)
正确的方法是通过拖放添加link button到页面,然后转到此按钮的属性并添加OnClick方法,即在后面的代码上创建自动化功能,你运行DownloadFile的地方
答案 1 :(得分:1)
1)尝试使用LinkButton。
2)你不能传回参数,你必须在服务器上获取数据。
答案 2 :(得分:1)
如果你对它必须直接成为锚标记这一事实很灵活,并且不介意将其创建为“按钮”,你可以使用以下内容:
ASP.Net Button in codebehind that calls codebehind function
如果没有,这是一个使用JavaScript和回发来实现类似功能的解决方案。我个人认为使用上面的按钮解决方案会更灵活,更接近你想要的。
答案 3 :(得分:0)
如果使用anchor标记作为服务器控件,则需要设置onServerClick事件。您可以向锚点添加自定义标记以供使用。
<a id="hypDownload" href="javascript:void(0);" runat="server" onserverclick="DownloadFile()" filename="files/Notes.doc" forcedownload="true"></a>
Private Sub hypDownload_ServerClick(sender As Object, e As EventArgs) Handles hypDownload.ServerClick
Dim filename As String = hypDownload.Attributes("filename") 'Also: CType(sender, HtmlAnchor).Attributes("filename")
Dim forcedownload As Boolean = hypDownload.Attributes("forcedownload").ToString().ToLower() = "true"
DownloadFile(filename, forcedownload)
End Sub
答案 4 :(得分:0)
将此javascript放在ASPX页面上。
<script type="text/javascript">
function DownloadFile() {
document.getElementById(<%= DownloadFile.ClientID%>).click();
}
</script>
将按钮置于隐藏显示样式的div标签内不要将按钮的显示样式设置为隐藏,因为javascript将无法在页面上找到该按钮。
<div style="display= hidden;">
<asp:button id="DownloadFile" runat="server" />
</div>
然后设置<a>
标记,如下所示:
<a href="javascript:DownloadFile();">link text</a>
然后使用您的子例程作为asp:button
的click事件说了这么多,asp:linkbutton选项会导致代码少得多。