Как начать загрузку файла, не покидая текущей страницы? - PullRequest
1 голос
/ 02 марта 2011

Как я могу принудительно загрузить файл на странице ASP.NET, используя данные из ViewState этой страницы? Я нашел примеры, предлагающие:

Response.ClearContent();
Response.ContentType = "text/plain";
Response.AddHeader("Content-Disposition", "attachment; filename=" + "example.aaa");
Response.Write( this.ViewState["stuffs"] );
Response.End();

Но если я сделаю это, текущая страница будет стерта и вернется пользователю пустым.

В других примерах говорится, что нужно создать «download.aspx» и запросить его с помощью javascript, но на этой новой странице у меня не будет доступа к данным ViewState первой страницы.

Суть в том, как мне создать файл, запустить загрузку и не потерять текущий статус страницы?

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

После дополнительного теста я нашел решение.

Если я удалю Response.ClearContent(); из примера кода, он будет работать именно так, как мне нужно:

  • создание нового файлаиспользуя фактические данные страницы
  • , запускающие загрузку этого файла
  • , сохраняя фактическую страницу в целости
0 голосов
/ 02 марта 2011

Обычно я справляюсь с этим с помощью Crystal Reports и создания PDF-файла.Я сохраняю ссылку на этот файл вместе с предоставленными данными и подаю ее по запросу.Вы захотите защитить файл, чтобы случайный хакер URL не мог наткнуться на него.

...