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

Eri*_*ker 7 .net javascript c# asp.net postback

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

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

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

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

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

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

Jam*_*See 7

从W3标准和RFC 2616:

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

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

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

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