Response.BinaryWrite и Response.Write из всплывающего окна. - PullRequest
0 голосов
/ 26 октября 2011

Я в модальном окне.

У меня есть гиперссылка, которая указывает на файл Ashx.

этот файл Ashx использует Response.BinaryWrite, чтобы отправить файл для загрузки, и я хочучтобы закрыть модальное.

дело в том, что

, если я использую

Response.BinaryWrite(myFile);
Response.("<script type='text/javascript'>window.close();</script>");

, это не работает.

если я оставлю в покое

Response.("<script type='text/javascript'>window.close();</script>");

, это сработает.

У какого-нибудь органа есть решение для этого?

thx

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Нет, решения нет, потому что ваши строки выше делают две разные вещи:

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

Вторая строка работает, потому что все, что вы делаете, это отправляете код JavaScript, который инструктирует окно браузера закрываться. Вы не можете переплетать эти 2 вещи в одном и том же потоке ответов.

1 голос
/ 26 октября 2011

Я думаю, что вы выбираете неправильный подход.AFAIK. Вы используете двоичную запись для отправки чего-то двоичного файла клиенту, т.е. в формате PDF. Клиент не поймет, что вы также отправляете JavaScript в конце двоичного потока.Нельзя объединить двоичные данные и скрипт

...