我有一个ASP.NET / C#页面。它基本上有一个文本框来接受用户输入。数据在服务器上处理,生成并保存文件。
最初我使用Response.TransmitFile()
将文件传输到客户端。但是,此过程会在下载文件时禁用页面上的javascript。
因此,我设计了一个.ashx处理程序来帮助下载文件。
现在,页面上有两个按钮。用户单击一个来处理并创建文件。页面回发后,另一个按钮被启用,应该单击以下载文件(调用处理程序)。
我想知道的是如何连接按钮来调用处理程序?
注意:我需要将参数作为查询字符串发送到处理程序。此参数仅在后面的代码中可用。
答案 0 :(得分: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>
如果需要在代码隐藏中设置参数,可以在其中一个Lifecycle事件中设置它,例如Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
lnkDownloadFile.NavigationUrl = string.Format("/File.ashx?Id={0}", MyParameterValue);
}
答案 1 :(得分: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);
}