C#ASP.NET检测下载

C#ASP.NET检测下载,c#,asp.net,C#,Asp.net,我正在用ASP.NET维护一个用C#编写的网站。页面底部是一个iframe。当用户单击某个按钮时,该iframe的源代码将使用Javascript设置为服务器上的某个页面 showLoadWidget(); document.getElementById("downloadFrame").src='SdrTrendDownload.aspx'; return false; 该页面生成一个文件并允许用户下载。一旦下载文件框弹出,我想调用hideLoadWidget(),这样“加载数据…”覆盖就消

我正在用ASP.NET维护一个用C#编写的网站。页面底部是一个iframe。当用户单击某个按钮时,该iframe的源代码将使用Javascript设置为服务器上的某个页面

showLoadWidget();
document.getElementById("downloadFrame").src='SdrTrendDownload.aspx';
return false;

该页面生成一个文件并允许用户下载。一旦下载文件框弹出,我想调用
hideLoadWidget()
,这样“加载数据…”覆盖就消失了。如何检测下载文件框何时弹出?

你不能,更不用说浏览器(如Chrome)实际上不会弹出下载文件对话框了。您可能应该做的只是附加到页面上的“就绪”或“已加载”事件,并在该事件发生时隐藏小部件

嗯,我认为你做不到。“下载文件盒”是浏览器的一项功能。您应该做的是在调用下载后立即调用
hideLoadWidget()

您无法检测到这一点。此外,这会变得更加复杂,这取决于他们对站点检测到的区域的安全设置


我建议您将调用包装在updatepanel中,并使用部分回发来触发下载提示和进度模板,以显示加载小部件。让.net和浏览器来处理它

Tejs是正确的。IE9也不再做模态对话框了。您可以做的是设置下载进度监视程序,并在监视程序看到数据正在发送到客户端时以编程方式隐藏覆盖。

是否可以使用诸如onload或onfocus之类的元素报告?我在tecite.com的formmail.php中设置了一些隐藏字段,它将电子邮件从页面发送到服务器上的邮箱

showLoadWidget();
document.getElementById("downloadFrame").src='SdrTrendDownload.aspx';
return false;