如何为ashx文件设置页面标题?

时间:2011-11-05 15:19:09

标签: c# asp.net html ashx

当用户在浏览器中查看ashx文件时,我想更改已打开窗口的“页面标题”。用户单击将在浏览器的新选项卡中打开的文档,并显示文档(即Word,Excel,PDF等)。现在发生的是,当我希望标题显示类似“New Document.pdf”或“New Document”而不是显示ashx的url时,页面标题显示类似“file.ashx?id = 5”的内容文件。

我已经考虑过通过标题设置文件名,这确实有效,但是文件被下载而不是简单地在更大的窗口中打开。这不是我想要的行为。

我知道这可能是不可能的,但我想我还是要检查一下。

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

对于页面标题:我只能与Internet Explorer通信,但是当您显示新窗口时,Internet Explorer要求始终显示标题栏(有关详细信息,请参阅MSDN文章About Window Restrictions) 。查看内联文件时的问题是您不会将任何HTML发送回页面,因此无法通过此方法更改标题。

我知道我们尝试了几种不同的方法,但我们认为对于我们的用户群来说,标题栏中没有用户可读的值是可以的。如果这对您很重要,那么我认为您唯一真正的选择是基于框架的解决方案,其中您的ashx页面嵌入在框架(或iframe)中,标题页面由不同框架(或部分框架)中的内容控制您使用iframe时的页面。

要在浏览器中查看文件而不是下载文件:您需要将Response ContentType设置为文件的相应MimeType(即PDF文件的“application / pdf”)并添加指定Content-Disposition标头该文件将以内联方式打开,并为用户提供文件名。您还应确保从响应中清除其他内容和标头。

this.Context.Response.ClearContent();
this.Context.Response.ClearHeaders();
this.Context.Response.ContentType = "application/pdf";
this.Context.Response.AddHeader("Content-Disposition", "inline; filename=mytest.pdf");
this.Context.Response.TransmitFile(sLocalFileName);
this.Context.Response.Flush();
相关问题