这行:
lblEmpl.Visible = True
永远不会被击中,因为这一行:
Response.End()
抛出一个ThreadAbortException
我认为处理此问题的一种更简洁的方法是创建一个简单的 HttpHandler 组件,并在弹出窗口中“打开”它。 (弹出窗口实际上不应打开。在大多数情况下,浏览器会意识到它实际上是下载,并会隐藏选项卡/窗口。)
研究IHttpHandler
界面。它们实际上实现起来非常简单。
这是一个示例处理程序。抱歉,花了一段时间,我被叫去参加一个会议:
public class CensusHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string fileName = String.Format(
CultureInfo.CurrentUICulture,
"E_{0:00}{1:00}.csv",
DateTime.Today.Month,
DateTime.Today.Day
);
context.Response.ContentType = "text/csv";
context.Response.AddHeader(
"Content-Disposition", String.Format(null, "attachment; filename={0}", fileName)
);
//Dump the CSV content to context.Response
context.Response.Flush();
}
public bool IsReusable { get { return false; } }
}
好的,尝试添加 javascript onclick 事件来触发下载:
<asp:Button ID="Clickety" runat="server" Text="Click Me!" OnClick="Clickety_Click"
OnClientClick="window.open('Handler.ashx', 'Download');" />
常规的OnClick
事件将触发您的回发代码。 javascript onclick (OnClientClick
)活动将通过以下方式启动下载HttpHandler
.