【发布时间】:2013-11-18 05:03:13
【问题描述】:
是否无法从页面(和数据库)收集信息、从给定信息创建 csv 文件、下载创建的文件和刷新页面?
当前用户看到一个包含行的表,通过选中复选框选择行,按导出按钮,然后 CSV 文件被创建并下载到用户计算机。问题在于页面刷新。
目前点击按钮时,CSV 会通过以下方式创建和下载:
//here is create csv function and then the result is outputed
Response.Clear()
Response.Buffer = True
Response.AddHeader("content-disposition", "attachment;filename=DataTable.csv")
Response.Charset = ""
Response.ContentType = "application/text"
Response.Output.Write(CsvFile.ToString(), 0)
Response.Flush()
Response.End()
此建议在 csv 文件下载后导致页面刷新出现问题。
1) 此链接: Redirecting to another page after Response.End() has been called in C#
建议 `Response.AddHeader("Refresh", "3; url=index.html");那应该刷新页面。 这不起作用,不会发生重定向。
2) 建议的另一个解决方案是创建一些额外的 URL 并允许用户从给定的 URL 下载文件。这不适合我的情况,因为 File 是根据页面上的数据创建的。
3)有没有其他适合需求的解决方案(按钮点击创建csv并下载,页面刷新)?
请给我一些线索好吗?
【问题讨论】:
-
你不能这样做。 Response.End() 中的“结束”是你最大的线索。
-
你说不可能从页面收集信息,创建csv文件,下载并刷新页面?
-
真的不清楚你到底想要什么。您要提供文件以供下载吗?然后执行此操作,但是一旦用户完成下载,您就无法将用户重定向到另一个 Uri。
-
每个请求只有一个“响应”。如果您的回复类型是“文件”,您期望什么?
-
我希望用户单击按钮,这将从页面上的数据创建新文件(将表行导出为 CSV)并将此文件下载到用户计算机。下载后我需要刷新页面(这将从表中删除导出的行)。