我有一段代码可以动态生成csv文件。用户单击按钮,我准备字符串,然后我这样做:
MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(sb.ToString()));
Response.Clear();
Response.ContentType = "Application/csv";
Response.AppendHeader("content-disposition", String.Format("attachment; filename={0}.csv", fileName.ToString()));
Response.BinaryWrite(stream.ToArray());
Response.End();
然后提示用户下载或保存新生成的文件。 问题是,在此之后我必须刷新页面中的一些数据。在Response.End之后,这是不可能的。
关于如何克服这个问题的任何想法?
答案 0 :(得分:4)
这是一个常见问题,有很多方法可以解决这个问题,这些方法都归结为需要为您的服务器创建两个单独的请求。第一个将请求您的CSV,第二个将请求您刷新。
考虑到这一点,很明显你可以:
因此,例如,引发CSV下载的链接也可以调用javascript函数,这会导致数据刷新。通常的方法是使用OnClientClick调用一些将刷新数据的javascript。
但是,您可以根据自己的应用决定最佳前进方式。
答案 1 :(得分:3)
也许点击按钮会在新窗口中将用户重定向到处理程序(ashx),这将返回流/提示用户保存文件?
-OR -
首先更新内容,然后将文件发送给用户。