我在 WebForms 应用程序上遇到问题,用户从页面上的下拉列表中选择一些条件并点击页面上调用此方法的按钮:
protected void btnSearch_Click(object sender, EventArgs e)
然后,他们点击按钮,根据调用此方法的条件下载zip文件:
protected void btnDownload_Click(object sender, EventArgs e)
在IE中,系统会通过浏览器顶部的栏提示他们:
“为了保护您的安全,Internet Explorer阻止了此站点 从下载文件到您的计算机“。
当他们点击该栏下载文件时,会再次触发btnSearch_Click
事件。
Response.ContentType
和Response.AddHeader
已正确设置。
问题是,btnSearch
附加标准,所以基本上它会被附加两次并导致问题。
我能做些什么来阻止这种情况吗?
这是一个使用C#3.5的VS2008 Web应用程序,它的价值。
答案 0 :(得分:1)
当他们点击下载按钮时,重定向到ZIP文件处理程序(页面?)以下载文件。即使用Post-Redirect-Get模式:http://en.wikipedia.org/wiki/Post/Redirect/Get
答案 1 :(得分:0)
您使用的是Content-Disposition标头吗?
Response.AddHeader("Content-Disposition", "attachment; filename=fileName.zip");
尝试更改内容类型以匹配文件类型?
答案 2 :(得分:0)
将一个布尔值保存到Session中,表示已经附加了条件。 当用户从下拉列表中选择另一个值时,请将此值设置为false。
在btn_Download事件中,您可以检查Session变量的值,并避免设置两次标准。