0

我有一个 ASP.NET/C# 页面。它基本上有一个文本框来接受用户输入。数据在服务器上进行处理,并生成并保存文件。

最初,我使用Response.TransmitFile(). 但是,此过程会在下载文件时禁用页面上的 javascript。

因此,我设计了一个 .ashx 处理程序来帮助下载文件。

现在,页面上有两个按钮。用户单击一个以处理和创建文件。一旦页面回发,另一个按钮被启用并且应该被单击以下载文件(调用处理程序)。

我想知道的是如何连接按钮来调用处理程序?

注意:我需要将参数作为查询字符串发送给处理程序。此参数仅在后面的代码中可用。

4

2 回答 2

1

我知道您专门询问按钮,但您可以将第二个按钮设为超链接,而不是像按钮一样设置样式并将 NavigationUrl(或 href)设置为 .ashx 路径。我对您的处理程序的代码做了一些假设,但由于它是一个处理程序,您可以通过 HTTP GET 请求直接调用它。

<asp:HyperLink ID="lnkDownloadFile" runat="server" NavigationUrl="/File.ashx?Id=1" Text="Download File" />

或者

<a href="/File.ashx?Id=1">Download File</a>

如果需要在代码隐藏中设置参数,可以在 Page_Load 等生命周期事件之一中设置:

protected void Page_Load(object sender, EventArgs e)
{
     lnkDownloadFile.NavigationUrl = string.Format("/File.ashx?Id={0}", MyParameterValue);
}
于 2013-04-18T03:54:55.857 回答
1

如果您特别想要一个按钮,对于请求,您可以采用以下方法:

ASPX:

<asp:Button ID="btnDownloadFile" runat="server" OnClick="btnDownloadFile_Click" />

代码隐藏:

protected void btnDownloadFile_Click(object sender, EventArgs e)
{
    Response.Redirect(string.Format("/File.ashx?Id={0}", MyParameter);
}
于 2013-04-18T04:08:01.750 回答