在Response.end()之后刷新页面

时间:2012-05-07 11:26:32

标签: asp.net

在我的应用程序中,我必须通过以下代码导出我已经实现的excel文件:

            Response.ClearContent();
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", pFileName));
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            FileInfo myFile = new FileInfo(fullfilePath);
            Response.WriteFile(myFile.FullName);
            Response.Flush();
            HttpContext.Current.ApplicationInstance.CompleteRequest();

            Response.End();

从我的主页面出现“导出到Excel”按钮,点击该按钮我已经注册了如下Javascript:

            ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language=JavaScript>window.location.href('GenerateExcel.aspx');</script>");

GenerateExcel.aspx页面的页面加载中,我已经编写了上面发布的导出文件的代码。这个代码对我有用,当用户点击“导出到Excel”按钮的Windows文件打开,保存&amp;关闭弹出窗口是apeear,用户可以保存或打开文件,但我的问题是,在该文件打开弹出窗口后,我想刷新主页面。我已经尝试注册javascript,但在Response.End nothiing工作之后。 请帮帮我。

1 个答案:

答案 0 :(得分:0)

您已使用window.location.href更改了主窗口的位置,然后HTTP响应具有Excel MIME类型。主窗口不再具有HTTP响应,无法刷新。

相反,您应该打开一个全新的窗口并使用它来发送Excel文件响应。然后,您仍然可以刷新主窗口。

你的脚本应该是这样的;

<script> 
  window.open('GenerateExcel.aspx', 'Export To Excel');
  window.location.href=window.location.href;
</script>

避免打开窗口的另一种方法是制作HTTP Request with JavaScript,但这需要jQuery才能获得可靠的跨浏览器解决方案。