Заставить IE открыть загрузку в новом окне - PullRequest
4 голосов
/ 09 ноября 2011

У меня есть веб-приложение, в котором перечислены файлы, хранящиеся в нем.

Каждый элемент имеет гиперссылку, при нажатии которой открывается диалоговое окно «Открыть / Сохранить».

Теперь, если я нажмупо ссылке, указывающей, скажем, на документ Word и выберите «Открыть», он откроется в его собственном окне, как и следовало ожидать.Однако, если файл является HTML-файлом, и я выбираю опцию «Открыть», он открывается на странице в браузере [правильно], но он открывается в окне, которое я использовал для выбора документа [плохо].

Так, на вопрос: можно ли заставить параметр «Открыть» диалогового окна «Открыть / Сохранить» открыть документ в новом окне?

Редактировать: Гиперссылка, которая вызывает документбыть открытым - это не просто указатель на файл (по ряду причин).Свойство .NavigateUrl содержит вызов функции JavaScript. Эта функция отправляет Ajax-запрос собственно приложению, которое извлекает документ из безопасного хранилища и представляет его браузеру пользователя в виде вложения (Content-Disposition: attachment)

Дальнейшее редактирование: Функция JavaScript просто вызывает Ajax-вызов обратно на страницу.Результатом действия является отображение страницы в IFrame.Эта страница записывается непосредственно в объект ответа следующим образом:

Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", FileName));
Response.AddHeader("Content-Length", String.Format("{0}", length));
Response.Flush();
Response.Close();

Полагаю, если - это , можно изменить действие кнопки «Открыть» в результирующем диалоге открытия / сохранения.это будет что-то, что я сделаю в этом коде, который заставит его.

Если это имеет значение, это приложение .Net v4.0, написанное на C #.

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

1 Ответ

5 голосов
/ 10 ноября 2011

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

Пусть каждая ссылка указывает на URL (например, /GetFileContent.aspx?fileid=123) и заставляет эту страницу выполнить необходимую логику перед загрузкой файла. Сохраните ваш ContextType и код заголовка ответа как есть.

Каждая ссылка откроет новое окно и будет выглядеть примерно так:

<a href="/GetFileContent.aspx?file=123" target="_blank">filename.doc</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...