Рендеринг страниц и обработчики http - PullRequest
0 голосов
/ 13 апреля 2011

У нас есть страница, которая открывается в новом окне браузера, где происходит автоматическое перенаправление на обработчик ASHX, который создает какой-то файл XLS. Это делается с помощью перенаправления javascript, то есть установки window.location.href на URL-адрес ASHX.

Хотя это работает и представляет диалоговое окно загрузки для файла, настройка window.location.href также очищает содержимое окна, чтобы оно оставалось пустым. Это как-то имеет смысл, но все же было бы неплохо сохранить там содержимое предыдущей страницы, открывая диалог загрузки на переднем плане. Возможно ли это как-то (отложив выполнение перенаправления или используя другую технику для вызова обработчика ASHX)?

Еще одна приятная вещь, если бы мы могли закрыть родительскую страницу после представления диалога загрузки, может ли это работать каким-либо образом?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Динамическое создание (в javascript) скрытого iframe, указывающего на местоположение загрузки ashx и добавление его в DOM, поможет.

0 голосов
/ 13 апреля 2011

Используя заголовок содержимого в вашем ответе от вашего обработчика, вы можете отобразить диалоговое окно сохранения без необходимости открывать новое окно. Вам не нужно будет использовать JavaScript, чтобы открыть новое окно или создать iframe.

 response.Clear();
 response.ContentType = "application/vnd.ms-excel";
 response.AddHeader("content-disposition", "attachment; filename=sample.xls");
 response.AddHeader("content-legth", content.Length.ToString());
 response.Write(content.ToString());
 response.End();

См. Этот вопрос для возможных типов MIME Excel (contentType) Настройка типа MIME для документа Excel

...