Подтвердить что ты не робот

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?

4b9b3361

Ответ 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/