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

时间:2012-01-05 15:52:16

标签: c# javascript asp.net .net postback

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

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

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

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

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

  • 在Web服务请求中请求该文件。网络服务需求 执行繁重的查询以确定是否将创建文件。一世 更喜欢这只发生过一次。
  • 用户可以拖放一些将在文件中使用的过滤器 请求。如果没有可用文件,则用户应该能够更改 他的过滤器,这就是不应该更改页面的原因。

1 个答案:

答案 0 :(得分:7)

来自W3标准和RFC 2616:

  

10.2.5 204无内容服务器已完成请求但不需要返回实体主体,并且可能希望返回更新   元信息。响应可以包括新的或更新的   实体标题形式的元信息,如果存在,应该是   与要求的变体相关联。
  如果客户端是用户代理,它不应该从导致请求发送的文档视图中更改其文档视图。此响应是   主要是为了允许在没有的情况下进行动作的输入   但是,导致更改用户代理的活动文档视图   任何新的或更新的元信息应该应用于文档   当前在用户代理的活动视图中。 204响应绝不可以   包括一个消息体,因此总是由第一个终止   标题字段后面的空行。

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

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

编辑:这是诀窍的代码:
System.Web.HttpContext.Current.Response.StatusCode = 204;