ASP.NET响应内容

时间:2009-12-09 23:52:12

标签: asp.net webforms httpresponse

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

我的aspx codebehind中的方法中有文件下载:

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

这很有用,但如果我尝试修改任何服务器端控件,则更改不会生效。我已经将它分离到对ContentType的调用,这显然会在调用时消除响应流的所有挂起更改?这听起来对任何人来说都很熟悉吗?

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

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

这是专门用于更新ValidationSummary,所以我可以在PageRequestManager事件完成时撕掉JS作为最后的手段,但我不想依赖JS来做这件事。

2 个答案:

答案 0 :(得分:1)

不确定您要执行的操作 - 您是否尝试同时提供下载文件以及对其链接到的HTML页面的更新?这不是HTML的工作方式。

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

答案 1 :(得分:1)

正如fyjham所说,我真的不明白你想要做什么。一些可能有用的提示:

  1. 请记住,渲染阶段,当生成标记和控件的内容时,几乎就是代码中的最后阶段(在Page_Load之后)
  2. 一旦刷新标题,就无法重新设置它们
  3. 控件可以覆盖某些HTTP标头
  4. 您不能在同一HTTP响应中混合文件下载和HTML标记