Ответ закрывается после экспорта документа - PullRequest
3 голосов
/ 08 мая 2011

Я пытался экспортировать документ Word в Response, используя ASP.Net. Так что я достиг этой цели с помощью этого кода.

Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentEncoding = Encoding.UTF8;
Response.Charset = "UTF-8";
Response.Buffer = true;

this.EnableViewState = false;
Response.ContentType = "application/msword";
Response.AddHeader("content-disposition", "attachment;filename=ExportedData" + Guid.NewGuid().ToString().Remove(5) + ".docx");

var wordData = this.RequestService.ExportToWord(this.RequestItem);

Response.BinaryWrite(wordData);
Response.Flush();

//Response.Clear();
//Response.End();
//Response.Close();
//RedirectToSamePage();
//Response.Flush();

Но проблема в том, что когда пользователь экспортирует страницу в виде текстового документа, другие функции страницы исчезают. Например, вы не можете щелкнуть по другому элементу управления ASP, потому что завершение объекта Response убивает соединение элементов управления ASP с DLL. Итак, как вы можете видеть из закомментированных кодов, я вызывал некоторые функции объекта Response, но все еще не могу управлять другими элементами управления ASP для работы после операции экспорта. Итак, как мне это сделать?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

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

Я предлагаю вам выполнить одно из следующих действий:

  • Откройте новую страницу и добавьте приведенный выше код на новую страницу, чтобы отправить документ Word
0 голосов
/ 08 мая 2011

Я бы сделал вторую страницу и поместил бы весь текстовый экспорт на вторую страницу.Затем на исходной странице aspx создайте response.redirect для этой новой страницы или window.location для нее, и новая страница просто вернет документ обратно.Таким образом, пользователь остается на исходной странице, и все работает нормально.

Я рекомендую использовать сессию перед перенаправлением на новую страницу, чтобы подобрать любые параметры, необходимые для генерации документа word.Однако строка запроса также будет работать.

...