<a> tag</a>中的通话功能

时间:2012-11-13 17:04:19

标签: asp.net vb.net

大家好我有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>

5 个答案:

答案 0 :(得分:2)

正确的方法是通过拖放添加link button到页面,然后转到此按钮的属性并添加OnClick方法,即在后面的代码上创建自动化功能,你运行DownloadFile的地方

答案 1 :(得分:1)

1)尝试使用LinkButton

2)你不能传回参数,你必须在服务器上获取数据。

答案 2 :(得分:1)

如果你对它必须直接成为锚标记这一事实很灵活,并且不介意将其创建为“按钮”,你可以使用以下内容:

ASP.Net Button in codebehind that calls codebehind function

如果没有,这是一个使用JavaScript和回发来实现类似功能的解决方案。我个人认为使用上面的按钮解决方案会更灵活,更接近你想要的。

Can I call a code behind function from a div onclick event?

答案 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选项会导致代码少得多。