0

我已经在 IIS 6.1、IE 7、ASP.NET 3.5 SP1 中对此进行了测试。

我在我的 aspx 代码隐藏的方法中有一个文件下载:

Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", contentDisposition);
Response.BinaryWrite(file);

这很好用,但是如果我尝试修改我的任何服务器端控件,则更改不会生效。我已将其隔离为对 ContentType 的调用,这显然会在调用时鞭打响应流的所有未决更改?这听起来很熟悉吗?

如果代码采用备用分支并且下载调用未触发,则按预期修改标记。

关于如何解决此问题并让页面刷新附件并在同一响应流中更新 UI 的任何建议?

这专门用于更新 ValidationSummary,因此我可以在 PageRequestManager 事件完成时撕入 JS 作为最后的手段,但我不希望为此依赖 JS。

4

2 回答 2

1

不确定您要做什么 - 您是否尝试同时提供下载文件和更新到他们链接到它的 HTML 页面?HTML 不是这样工作的。

如果你想达到这个结果,那么你基本上必须呈现一个元重定向,该重定向会转到 HTML 中返回的文件,这样页面就会加载,然后下载开始(就像你会看到很多下载站点)。

于 2009-12-10T00:08:51.807 回答
1

正如 fyjham 所说,我真的不明白你在做什么。一些可能会有所帮助的提示:

  1. 请记住,在生成标记和控件的内容时,渲染阶段几乎发生在代码后面的最后一个阶段(在 Page_Load 之后)
  2. 刷新标题后,您无法再次设置它们
  3. 控件可以覆盖某些 HTTP 标头
  4. 您不能在同一个 HTTP 响应中混合文件下载和 HTML 标记
于 2009-12-10T00:58:37.720 回答