Как установить заголовок страницы для файла ashx?

Я хотел бы изменить «заголовок страницы» для открытого окна, когда пользователь просматривает файл ashx в браузере. Пользователи щелкают документ, который открывается в новой вкладке браузера, и документ отображается (например, Word, Excel, PDF и т. д.). Что происходит сейчас, так это то, что заголовок страницы показывает что-то вроде «file.ashx?id=5», когда я бы предпочел, чтобы заголовок отображал что-то вроде «Новый документ.pdf» или просто «Новый документ» вместо отображения URL-адреса ashx файл.

Я попытался установить имя файла через заголовок, это работает, но файл загружается, а не просто открывается в окне браузера. Это не желаемое поведение, к которому я стремился.

Я понимаю, что это может быть невозможно, но все же решил проверить.

Спасибо за помощь.


person joero4    schedule 05.11.2011    source источник
comment
Я не верю, что это возможно.   -  person Josh Stodola    schedule 05.11.2011


Ответы (1)


Что касается заголовка страницы: я могу говорить только с Internet Explorer, но когда вы показываете новое окно, Internet Explorer требует, чтобы всегда отображалась строка заголовка (см. статью MSDN Об ограничениях окна для получения дополнительной информации). Проблема при просмотре встроенных файлов заключается в том, что вы не отправляете HTML-код обратно на страницу, поэтому с помощью этого метода невозможно изменить заголовок.

Я знаю, что мы экспериментировали с несколькими различными подходами, но решили, что для нашей пользовательской базы нормально не иметь удобочитаемого значения в строке заголовка. Если это важно для вас, то я думаю, что вашим единственным реальным вариантом будет решение на основе фреймов, в котором ваша страница ashx встроена во фрейм (или iframe), а титульная страница управляется контентом в другом фрейме (или части фрейма). страницу, если вы используете iframe).

Чтобы просмотреть файл в браузере, а не загружать его: вам нужно установить Response ContentType в соответствующий MimeType для файла (например, «application/pdf» для файлов 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();
person competent_tech    schedule 05.11.2011
comment
Он хочет изменить ‹title›‹/title› в браузере. - person Phill; 05.11.2011
comment
Спасибо, обновил ответ, чтобы предоставить дополнительную информацию о заголовке. - person competent_tech; 05.11.2011
comment
Переместите это редактирование в начало своего ответа, так как это то, о чем просил ОП, и я +1 - person sq33G; 05.11.2011
comment
Сделанный. Там был скрытый вопрос о просмотре файла вместо загрузки, но главный вопрос действительно был о заголовке. - person competent_tech; 05.11.2011
comment
Совершенно забыл об этом вопросе, так как просто перешел к более крупным сражениям. В любом случае спасибо за комментарии. Каркасное решение кажется лучшим вариантом. - person joero4; 17.11.2012