Asp.net 如何强制下载GridView中链接所在的文件?

Asp.net 如何强制下载GridView中链接所在的文件?,asp.net,gridview,download,Asp.net,Gridview,Download,我有一个Gridview,其中显示了以前上载到服务器的文件列表,带有超链接控件。为了能够下载文件,我需要在用户每次单击其中一个提供的链接时强制下载,以便文件不会直接在浏览器上打开(通常是图像)。目前,我有一个强制下载的服务器端功能,但我不知道当用户单击它时如何将此功能分配给每个链接。创建一个下载页面,通过GET查询获取下载参数 在Gridview中,创建一个带有超链接列的模板字段,在外部窗口中打开下载页面,下载发送的文件,然后文件自行关闭,我提供了一个示例代码 <Columns>

我有一个Gridview,其中显示了以前上载到服务器的文件列表,带有超链接控件。为了能够下载文件,我需要在用户每次单击其中一个提供的链接时强制下载,以便文件不会直接在浏览器上打开(通常是图像)。目前,我有一个强制下载的服务器端功能,但我不知道当用户单击它时如何将此功能分配给每个链接。

创建一个下载页面,通过GET查询获取下载参数

在Gridview中,创建一个带有超链接列的模板字段,在外部窗口中打开下载页面,下载发送的文件,然后文件自行关闭,我提供了一个示例代码

<Columns>
 <asp:TemplateField>
  <ItemTemplate>
   <a href="downloadPage.aspx?filename=<%# Eval("File") %>" target="_blank">Download</a>
  </ItemTemplate>
 </asp:TemplateField>
</Columns>

谢谢大家,我使用一个ImageButton并为其分配了一个Row命令,该命令调用我的ForceDownload方法:

HTML:

你是如何“强制”下载的?代码示例可能会有所帮助
<asp:TemplateField HeaderText="Download File">
   <ItemTemplate>
      <asp:ImageButton ID="ibDownload" runat="server" CommandName="Download" CommandArgument='<%# Bind("path") %>' />
   </ItemTemplate>
</asp:TemplateField>
Private Sub gvFileList_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvFileList.RowCommand
    If e.CommandName = "Download" Then
        Dim myPath = Server.MapPath(e.CommandArgument)
        ForceDownload(HttpContext.Current, myPath)
    End If
End Sub