如何在 asp.net 中的另存为文件功能中结合警报弹出窗口?

Posted

技术标签:

【中文标题】如何在 asp.net 中的另存为文件功能中结合警报弹出窗口?【英文标题】:How do I combine alert popup in save as file function in asp.net? 【发布时间】:2010-07-17 13:27:31 【问题描述】:

我正在尝试编写一个需要保存文件(在 csv 中)并具有条件的函数。 是这样的:

如果文件小到 1MB,那么我想在 javascript 中弹出一个警报,然后继续保存为文件命令。

我所做的是:

if(...)


else

  ClientScript.RegisterStartupScriptBlock(...alert('aaa')...);

Response.ContentType = "text/csv";
Response.AppendHeader("Content-Disposition","attachment; filename=file.csv");
Response.TransmitFile("FILE.csv");
Response.End();

另存为工作正常。但在其他情况下不会弹出警报。 我试过RegisterStartupScript。我尝试了很多选择。但似乎response.end 阻止了客户端脚本的发生。

我正在用 c# asp.net(启用 ajax 的网站,但未使用)、visual studio 2005 编写。

谁能知道我该如何绕过这个?我怎样才能让它发挥作用?

谢谢你, 加迪姆。

【问题讨论】:

【参考方案1】:

问题在于您的内容类型是“text/csv”,因此服务器永远不会将您的启动脚本发送到浏览器。即使这样做了,浏览器也会将响应处理为 csv 文件,而不是 html,因此脚本永远不会被执行。

这样做的方法是在您的启动脚本中包含一个重定向,如下所示:

alert("aaa");
window.loocation.href = "http:\\url-to-return-csv";

url 可以指向您现有的页面,并带有一个参数告诉您重新调整 csv,或者您可以编写一个 http 处理程序来返回 csv

【讨论】:

以上是关于如何在 asp.net 中的另存为文件功能中结合警报弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过读取XML配置文件导入Excel文件到数据中

如何禁用 MS Project VBA 中的另存为按钮?

HTA 中的另存为...对话框

asp.net 另存为 PDF文件

ASP.NET 中 IE 7,8 中“另存为”对话框的问题

不考虑另存为文件类型的另存为通用文件对话框