如何阻止回发刷新客户端的页面

本文关键字:客户端 刷新 何阻止 | 更新日期: 2023-09-27 18:19:28

当我使用__doPostBack启动回发时,会创建一个文件并返回给用户以在HttpContext.Current.Response中下载。

因为我更改了Response,所以包含其javascript值的页面不会被修改

但是,当我没有要输出的文件时,页面会被刷新(因为回发),并且页面上的javascript修改也会丢失。

如何"停止"回发并保持当前页面?我不能使用异步回发,因为我需要回发让用户下载文件。

编辑:评论中的一些问题后的更多信息:

  • 该文件是在Web服务请求中请求的。Web服务需要以执行繁重的查询来确定是否将创建文件。我更希望这种情况只发生一次
  • 用户可以拖放将在文件中使用的一些筛选器要求如果没有可用的文件,用户应该可以更改他的过滤器,所以这就是为什么页面不应该更改

如何阻止回发刷新客户端的页面

来自W3标准和RFC 2616:

10.2.5 204无内容服务器已完成请求,但不需要返回实体主体,可能需要返回更新的元信息。回复可能包括新的或更新的实体标头形式的元信息,如果存在,则应与所请求的变体相关联
如果客户端是用户代理,则不应更改导致发送请求的文档视图此响应是主要用于允许在没有导致用户代理的活动文档视图发生更改,尽管任何新的或更新的元信息都应该应用于文档当前在用户代理的活动视图中。204响应不得包含消息正文,因此总是由第一个标题字段后的空行。

请注意此处的粗体线。我自己没有试过;然而,将HTTP状态设置为204并发回一个空文档,而不是试图完全停止回发,当然值得一试。

祝你好运,我希望这能有所帮助。

编辑:这是实现此功能的代码:
System.Web.HttpContext.Current.Response.StatusCode = 204;