2009-11-11 7 views
3

Я работаю над проектом C# с использованием ASP .net.ASP.net-приложение затем обновить страницу

У меня есть список отчетов с гиперссылкой для каждого, который вызывает веб-сервер, получает в PDF, а затем возвращает PDF для пользователя, чтобы сохранить или открыть:

ASPX страницы:

<table> 
<tr> 
<td> 
    <a href="#" onclick="SubmitFormToOpenReport();">Open Report 1</a> 
<td> 
</tr> 
... 
</table> 

ASP.Net:

context.Response.Clear(); 
context.Response.AddHeader("content-disposition", "attachment;filename=report.pdf"); 
context.Response.Charset = ""; 
context.Response.ContentType = "application/pdf"; 
context.Response.BinaryWrite(myReport); 
context.Response.Flush(); 

Это работает, как ожидалось, но я хотел бы, чтобы также обновить страницу с обновленным списком.

У меня возникли проблемы, так как единственный запрос/ответ возвращает отчет.

Есть ли способ обновить страницу?

Хотя есть правильный ответ, не стесняйтесь включать ответы, которые детализируют альтернативные решения/идеи для этого.

ответ

9

К сожалению, ваш нынешний подход является тупиком. Характер HTTP - это один запрос, один ответ. Ответ может содержать только один код - «ОК, вот некоторые данные, пожалуйста, скачайте его». «Иди сюда» - это другой код. Вы описываете нечто гораздо более сложное - последовательность инструкций. Сначала «вот файл», затем «перенаправить себя на другой ресурс». Последствия этой работы должны быть ключом - когда следует перенаправить браузер? Когда пользователь выбирает местоположение для сохранения файла? После завершения загрузки файла?

Чтобы сделать то, что вы описываете, вы можете открыть JavaScript в новом окне, а также повторно загрузить текущее окно.

+0

+1. То, что я думал. Мы сделали это, имея файл ashx для создания PDF-файла. У нас есть ссылка, которая на стороне клиента открывает новое окно для ashx, но затем возвращается к исходной странице для обновления. – David

+0

Спасибо, Рекс, который указал мне в правильном направлении. Я отправил форму в javascript и сделал цель = "_ blank". Это открыло PDF в новом окне (которое закрывается после того, как пользователь нажимает на сохранение или отмену). Затем в следующей строке я представил обновленную форму. – Russell

+0

@ Давид - из любопытства, что такое файл ashx? – Russell

-1

response.redirect(request.url.tostring) Попробуйте использовать после context.Response.Flush();

Смежные вопросы