Response.Write и UpdatePanel
Я создаю vcard, который я отправляю клиенту с помощью следующего фрагмента кода:
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileNameOnly));
Response.ContentType = "text/x-vcard";
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");
Response.Write(vCard.ToString());
Response.End();
Однако мне нужно использовать vCards на странице с элементом управления внутри и UpdatePanel. К сожалению, согласно панель обновления и ответная запись, это не работает и вызывает ошибку.
Мне интересно, какие альтернативные способы отправить содержимое vcard/файла в клиентский браузер и отобразить ли это диалоговое окно "открыть/сохранить", в котором нет Response.Write?
Ответы
Ответ 1
Вы не можете использовать Response.Write
во время асинхронной обратной передачи. Независимо от того, какой контроль выполняет этот код, необходимо добавить в панель обновления PostBackTrigger
:
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
Вы также можете сделать это в коде, если хотите:
ScriptManager.GetCurrent().RegisterPostBackControl(Button1);
Ответ 2
Response.Write не будет работать под асинхронными событиями. Мое предложение - удалить панель обновления, если она специально используется только для точки зрения VCard.
Альтернативно. Поместите элемент управления внутри панели обновления и инициализируйте его значение при асинхронном событии. Теперь это сработает.
Ответ 3
Почему вы не рассматриваете использование отдельного обработчика/страницы для обслуживания vcard?
Это, возможно, самый простой и понятный способ сделать это, и он не мешает никакому другому (асинхронному или нет) обратному сообщению, связанному с обновленной панелью.
Ответ 4
У меня была аналогичная проблема с Response.Write
. Я нашел обходное решение или даже решение этой проблемы. Захватите TextWriter
, заданный RenderBeginTag
серверного элемента управления и напишите ему.
Я написал блог с примером здесь: http://timscyclingblog.wordpress.com/2013/03/07/asp-net-web-forms-response-write-in-an-updatepanel-dev-web/